使用父类构造函数初始化列表

时间:2016-12-13 14:21:21

标签: c++ class constructor nested parent

有没有办法建立一个构造函数初始化列表,它为嵌套类字段设置值? E.g:

·H

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

的.cpp

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

如何使用构造函数初始化列表正确执行此操作?如果可能的话。

编辑:示例中的错误。

1 个答案:

答案 0 :(得分:2)

是。您可以使用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的成员。如果您不想这样做,则需要声明构造函数。