У меня есть класс 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
? Спасибо.