包含文件混乱
我有 2 个类 - 一个类保存实体信息,另一个类保存组件信息。 现在的问题是,Entity 类需要已经定义的 Component 类,以便在子级向量中使用它,但同时 Component 需要 Entity 将其声明为它的父级(我保持其间的所有链接)。这会产生奇怪的错误,尽管 IntelliSense 说它已经全部定义好了。
我怎样才能克服这个困难呢?
I'm having 2 classes - one holding Entity information other holding Component information.
Now the problem is that the Entity class needs Component class already defined for using it in vector of children, but at the same time Component needs Entity to declare it as it's parent (I'm keeping everything linked in between). This puts out strange errors, even though IntelliSense says it's all already defined.
How can I overcome this difficulty?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
component.h:
entity.h:
这里唯一的缺点是component.h中的内联方法不能使用Entity方法。
component.h:
entity.h:
The only drawback here is that inline methods in component.h cannot use Entity methods.
听起来您有这样的情况:
Entity.h:
Component.h:
解决该问题的一种方法是前向声明
Component
类并使用指向vector
的指针代码>组件s:Entity.h:
Component.h:
Entity.cpp:
It sounds like you have this:
Entity.h:
Component.h:
One way around the issue is to forward-declare the
Component
class and use avector
of pointers toComponent
s:Entity.h:
Component.h:
Entity.cpp:
使用前向声明
Use forward declaration
一种选择是,如果您仅在
vector
中使用指向Component
的指针(即vector
(或智能 ptr 变体))vector
),您可以转发声明Component
类,并且您的Entity
类声明不需要Component< /代码> 定义。
One option is if you just use pointers to
Component
in yourvector
(ievector<Component*>
(or a smart ptr variant) instead ofvector<Component>
), you could forward declare theComponent
class and yourEntity
class declaration wouldn't need theComponent
definition.