循环依赖

时间:2015-07-27 14:14:50

标签: c++

我有一个名为Point的类和一个包含树类的其他命名空间。 此树是一个平衡的二叉搜索树,并使用函数compare来比较其键并将它们放在正确的位置。我的树包含Point个,对于每个点,我必须知道它属于哪个树,所以我尝试在我的Point类中添加指向树的指针,如下所示:

class Point{
   public:
   double x, y;
   std::set<std::multiset<Point,Tree::compare()>*>s; //Tree is the name of the namespace
// some other data
}

我的问题是,由于我的树使用Point.h(因为它存储Point s),我无法将LayerThree.h添加到我的树中,所以我无法在Tree::compare()中使用Point.h {1}}。我尝试添加一个像cmp.h这样的新文件并将比较函数放入其中,但它没有帮助。我该怎么办?

编辑:我无法将我的树和我的Point类放在同一个文件中,因为还有其他文件需要包含Point.h

1 个答案:

答案 0 :(得分:0)

正如Jepessen所说,你需要前瞻声明。这是一个例子:

A类依赖于B类,B类依赖于A类,使用前向声明如下:

在班级“B.h”中:

#include "A.h"

class B
{
   //Do stuff
};

在班级“A.h”中:

 // Forward declaration of class B, this tells the compiler to not worry about 
 // class B as somewhere later in compilation class B will be declared
class B;

class A
{
   //Do stuff
};