Рассмотрим этот код:
struct A {};
struct B
{
B(A* a) : a(a) {}
private:
A* a;
};
struct base
{
base(B b) : b(b) {}
protected:
A a;
private:
B b;
};
struct derived : public base
{
derived() : base(B(&a)) // <-- IS THIS OK?
{}
};
Здесь базовому классу нужен объект B, переданный его конструктору производным классом, а объект B ссылается на объект A, но объект A живет внутрибазовый класс.
Конструктор объекта B ничего не делает с указателем A, кроме как сохраняет его, поэтому я думаю, что все должно быть в порядке, но все равно это не так, потому что технически объект A еще не существует ввремя, когда я передаю его в базовый конструктор.
Могу ли я столкнуться с проблемами при этом или все должно быть в порядке?