class B;
class A
{
B b;
A();
};
class B
{
A a;
B();
};
У меня есть два класса следующим образом. По какой-то причине, даже если я вперед объявить класс B, у меня есть ошибка, которая говорит, что:Базовая форвардная декларация не работает
field 'b' has an incomplete type!
Почему это так?
Следует ли использовать указатель/ссылку для хотя бы одного члена? (в настоящее время ваши классы будут иметь бесконечный размер). – Jarod42
спрашивает, почему в этом конкретном случае форвардная декларация не работает, это не то же самое, что просить «Можете ли вы объяснить» форвардное объявление «далее?» Или «Когда я могу использовать объявление вперед?», Вы могли бы пометить как дубликат для настоящий дубликат вроде этого: http: // stackoverflow.com/questions/20202231/slaying-the-circle-depend', который фактически содержит технический ответ (почему он не может работать?: ответ 1) и концептуальный ответ (почему это никогда не должно быть разрешено работать? Ответ 2). Если вы собираетесь заблокировать любой ответ, отметив его как дубликат, потребуется время, чтобы связать REAL duplicate – Guiroux