Для определённого кода есть необходимость использовать объекты внешнего класса для внутреннего класса.
Вот такое вот собирается:
Код который собираетсяclass Outer {
public:
class Inner {
Outer *_outer;
public:
Inner() : _outer(new Outer()) { }
};
Outer() { }
};
А вот такое нет:
Код который не собираетсяclass Outer {
public:
class Inner {
Outer _outer;
public:
Inner() : _outer() { }
};
Outer() : _inner() { }
};
Выдаёт ошибку: "
field '_outer' has incomplete type"
Очень странно - ведь в обоих случаях нужен доступ к реализации конструктора. Почему в первом случае (при создании объекта на куче) это работает, а если делать его "не по указателю" - нет.
П.С.: Кстати, спрошу заодно: как правильно называть объекты, которые хранятся в каком-либо контексте не по указателю?
(edited): Поправил вопрос с учётом комментария
AtomKrieg про рекурсию