处理父/子类关系中的循环包含
假设我创建了一个类,例如 Parent
,它与 Child
具有组合关系。父类保存子级列表。
我希望所有子项都保存对父项的引用,因此每个子项都保存一个 Parent
指针。
这将导致循环包含。我在 parent.h 中引用 Child
,在 child.h 中引用 Parent
。因此,Parent
需要包含 Child
,而 Child
又需要包含 Parent
。
解决这个问题的最佳方法是什么?
Assume I've made a class, say Parent
, that has a composition relation with Child
. The parent class holds a list of children.
I want all children to hold a reference to the parent, so every child holds a Parent
pointer.
This will cause circular inclusion. I refer to Child
in parent.h and I refer to Parent
in child.h. Therefore Parent
will need to include Child
, which needs to include Parent
.
What's the best way to work around this?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您必须使用前向声明:
You'll have to use forward declaration:
由于
Child
类中仅存储Parent
的指针,因此无需在#include "parent.h"
中执行#include "parent.h"
代码>child.h 文件。在child.h
中使用class Parent;
的前向声明,而不是在其中包含parent.h
。在child的源文件中,即child.cpp
中,您可以执行#include "parent.h"
来使用Parent
方法。Since only a pointer of
Parent
is stored inside theChild
class there is no need to do a#include "parent.h"
in thechild.h
file. Use the forward declaration ofclass Parent;
inchild.h
instead of incldingparent.h
in there. In the source file of child i.e.child.cpp
you can do#include "parent.h"
to use theParent
methods.