我有一个类B
,需要构造一个类A
的实例:
class B
{
B(A* a); // there is no default constructor
};
现在我想创建一个包含B
成员的类,因此我还需要将A
作为成员添加并提供给B
的构造函数:
class C
{
C() : a(), b(&a) {}
A a; // 1. initialized as a()
B b; // 2. initialized as b(&a) - OK
};
但问题在于,如果有人偶尔更改类中变量定义的顺序,它将会出错。
class C
{
C() : a(), b(&a) {}
B b; // 1. initialized as b(&a) while "a" uninitialized
A a; // too late...
};
有没有不修改 A
和 B
类的好方法来解决这个问题?谢谢。
-Wall
选项会产生这样的警告。 - Matteo Italia