我有一个类需要构造一个类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
?谢谢。