使用父 class 构造函数初始化列表在嵌套 class 字段中设置值

Setting values in nested class fields using parent class constructor initialization list

有没有办法制作构造函数初始化列表,为嵌套的 class 字段设置值? 例如:

.h

    class A {
    public:
         A(int tmp);
         class B{
           friend A;
           int x;
         };
         B b;
    }

.cpp

    A(int tmp): x(tmp){};

如何使用构造函数初始化列表正确地做到这一点?如果可以的话。

编辑:示例中的错误。

是的。您可以使用 A 的成员初始化列表来初始化 b。通常你会调用一个适当的 B 构造函数,但在这种情况下,B 实际上没有声明任何构造函数,但它足够简单,标准聚合初始化将起作用。

class A {
public:
    A(int tmp);
    class B{
    public:
        friend A;
        int x;
    };
    B b;
};

A::A(int tmp) : b{tmp} {}

注意:我不得不将 B 设为 public 的成员。如果您不想这样做,则需要声明一个构造函数。