C++: Conceptual circular include problem

柔情痞子 提交于 2019-12-18 09:27:36

问题


I'm making a component based entity system for a game engine.

I have an entity class, which has to include the component base class header in order to define the array of components private Component* components[ 123 ]

However, in the component base class I have to define a private Entity* ownerEntity, beacuse it is crucial that a component knows who it belongs to!

This results in Entity.h needing Component.h and vice-versa -> Circular reference

How can I solve this?


回答1:


As long as you only need your class to contain pointers or references to the other classes, you can skip the real include file and use an empty forward declaration like class Component;.

You will need the full include in the source file where you dereference the pointers or use the reference to call methods on Component.



来源:https://stackoverflow.com/questions/4110479/c-conceptual-circular-include-problem

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!