C++:概念循环包括问题

1 c++ circular-dependency include

我正在为游戏引擎制作基于组件的实体系统.

我有一个实体类,它必须包含组件基类头以定义组件数组 private Component* components[ 123 ]

但是,在组件基类中我必须定义一个private Entity* ownerEntity,因为组件知道它属于谁是至关重要的!

这导致Entity.h需要Component.h,反之亦然 - >循环引用

我怎么解决这个问题?

Ben*_*son 11

只要您只需要您的类包含指针其他类的引用,您就可以跳过真正的包含文件并使用空的前向声明class Component;.

您将需要源文件中的完整包含,您可以在其中取消引用指针或使用引用来调用方法Component.

  • 事实上,因为在这两个类中你只需要指针,你可以(应该!)向前声明依赖,而不是将它们包含在两个头中.在这种情况下,两个标题都不应该依赖于另一个; 这将使超快的编译时间.为每个班级冲洗并重复所有其他参考文献,指针及其常量对应项.**另外**:阅读[Herb Sutter关于编译时依赖性的内容](http://www.gotw.ca/gotw/007.htm). (2认同)