C ++: концептуальный циркуляр включает проблему - PullRequest
1 голос
/ 06 ноября 2010

Я создаю компонентную систему для игрового движка.

У меня есть класс сущности, который должен включать заголовок базового класса компонента, чтобы определить массив компонентов private Component* components[ 123 ]

Однако в базовом классе компонентов я должен определить private Entity* ownerEntity, поскольку крайне важно, чтобы компонент знал, кому он принадлежит!

В результате Entity.h требуется Component.h и наоборот -> Циркулярная ссылка

Как я могу решить это?

1 Ответ

11 голосов
/ 06 ноября 2010

Пока ваш класс должен содержать указатели или ссылки на другие классы, вы можете пропустить настоящий включаемый файл и использовать пустое объявление вперед, такое как class Component;.

Вам потребуется полное включение в исходный файл, в котором вы разыменовываете указатели или используете ссылку для вызова методов на Component.

...