我读过this问题
如果您确实有一个模型,其中A包含B,B包含A,那么这些类似乎无法相互生存。在这种情况下,也许您实际上只有一堂课而不是两堂课。
如果A可能包含B,但B应该始终引用A(如果没有A,B就不会存在),那会是什么情况?
为了说明,这里是一个Cube类,其中可能包含Collider类的对象(即:其他具有碰撞器的多维数据集应与之碰撞)。
class Cube
{
public:
Cube();
~Cube();
Collider collider; //Optional Collider
}
class Collider
{
public:
Collider(Cube & parentReference) : parent(parentReference) {}
private:
Cube & parent;
}
在这种情况下,Cube和Collider实际上应该是两个单独的类,如何在仍然能够在Collider中存储对Cube的引用的同时避免循环依赖呢?
编辑:此问题已得到解答。但是,有谁愿意让我知道为什么这个问题被否决,以便将来我会改变我的方式?重复?没有足够的信息?初学者的问题太多了吗?让我知道:)
最佳答案
class Collider;
class Cube
{
public:
Collider* collider; //Optional Collider
}
class Collider
{
public:
Collider(Cube & parentReference) : parent(parentReference) {}
private:
Cube & parent;
}
声明Collider的存在并在以后定义。 C(++)允许指向不完整类型的指针。
这是more info about forward declaration。
关于c++ - C++类之间的循环依赖,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39722036/