使用父 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 的成员。如果您不想这样做,则需要声明一个构造函数。
有没有办法制作构造函数初始化列表,为嵌套的 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 的成员。如果您不想这样做,则需要声明一个构造函数。