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

C++ 使用父类构造函数初始化列表在嵌套类字段中设置值,c++,class,constructor,nested,parent,C++,Class,Constructor,Nested,Parent,有没有办法创建一个构造函数初始化列表,为嵌套类字段设置值? 例如: h .cpp 如何使用构造函数初始化列表正确地执行此操作?如果可能的话 编辑:示例中有错误。是。您可以使用A的成员初始化列表来初始化b。通常,您会调用适当的B构造函数,但在本例中,B实际上没有声明任何构造函数,但非常简单,标准聚合初始化可以工作 class A { public: A(int tmp); class B{ public: friend A; int x;

有没有办法创建一个构造函数初始化列表,为嵌套类字段设置值? 例如:

h

.cpp

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


编辑:示例中有错误。

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

一个
a
不包含
B
。如果要执行此操作,必须将类型为
B
的成员变量添加到
a
,并对其进行初始化。在
a
中是否有
B
的成员?如果不是,为什么你要实例化它?是的,我很抱歉。修正了密码。A类中有一个B对象。我在这里不太明白。
A::A(inttmp):b{tmp}{}
如何将值设置为x?如果还有另一个字段
inty
,会发生什么?这与编写
structb{intx,inty}B={1}是一样的
b.x
是第一个成员,将被初始化为1<代码>b.y
将被初始化为零。请记住,C++中的<>代码>结构> <代码>和>代码>类< /代码>之间的唯一区别是成员和基础的默认访问;没有别的了。
    A(int tmp): x(tmp){};
class A {
public:
    A(int tmp);
    class B{
    public:
        friend A;
        int x;
    };
    B b;
};

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