处理父/子类关系中的循环包含

发布于 2024-10-03 01:54:06 字数 362 浏览 3 评论 0原文

假设我创建了一个类,例如 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

心病无药医 2024-10-10 01:54:06

您必须使用前向声明:

//parent.h
class Child; //Forward declaration
class Parent
{
    vector<Child*> m_children;
};

//child.h
class Parent; //Forward declaration
class Child
{
    Parent* m_parent;
};

You'll have to use forward declaration:

//parent.h
class Child; //Forward declaration
class Parent
{
    vector<Child*> m_children;
};

//child.h
class Parent; //Forward declaration
class Child
{
    Parent* m_parent;
};
一梦等七年七年为一梦 2024-10-10 01:54:06

由于 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 the Child class there is no need to do a #include "parent.h" in the child.h file. Use the forward declaration of class Parent; in child.h instead of inclding parent.h in there. In the source file of child i.e. child.cpp you can do #include "parent.h" to use the Parent methods.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文