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