C++ 使用父类构造函数初始化列表在嵌套类字段中设置值
有没有办法创建一个构造函数初始化列表,为嵌套类字段设置值? 例如: h .cpp 如何使用构造函数初始化列表正确地执行此操作?如果可能的话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;
编辑:示例中有错误。是。您可以使用
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} {}