我有 3 个类,一个基类,一个父类和一个子类。Parent 有m_children
一个可以有多个孩子的向量,但是一个孩子只能有一个父对象作为它的m_parent
属性。我应该如何实现这个?这是课程的快速预览(为了问题而重写)
基数.h
class Base
{
public:
Base();
virtual void getClid();
virtual void setClid();
private:
int m_clid;
};
父.h
#include <vector>
#include "Base.h"
#include "Child.h"
class Parent : public Base
{
public:
Parent();
void addChild(Child* child);
void removeChild(Child* child);
Child* getChild(int index);
private:
std::vector<Child*> m_children;
};
孩子.h
#include "Base.h"
class Child : public Base
{
public:
Child();
Base* getParent();
void setParent(Base* parent);
private:
Base* m_parent;
};
如您所见,现在这里的问题是我只能在“Child.h”中包含“Parent.h”,或者反过来,不能同时包含两者。我如何告诉孩子他父母的类型?下面的代码可以正常工作,但是如果我想m_parent->removeChild(this);
从 Child 对象的析构函数中调用例如,它将不起作用,因为 Child 只知道 Parent 的 getClid 和 setClid 方法,它们都在“Base.h”中定义