我有一个名为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
答案 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
};