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ますか? ありがとう。