【发布时间】:2016-05-02 14:06:07
【问题描述】:
我想用 C++ 创建一个八叉树数据结构。我有一个如下所示的头文件:
class Octree
{
public:
typedef struct node
{
int value;
node *child[8];
}node;
Octree();
~Octree();
int convert(int sorszam);
void clear(struct node*);
node* search(int dec,int oct);
};
我想在 .cpp 文件中编写搜索功能,但总是收到错误消息。这是.cpp代码:
node* Octree::search(int dec, int oct) {
//doing something here
return nullptr;
}
错误信息说:
声明与“Octree::node *Octree::search(int dec, int oct)”不兼容(在“c:\Users\xxx\Documents\Visual Studio 2015\Projects\xxx\xxx 第 19 行声明\Octree.h")
我不知道发生了什么,因为这两个函数的类型是相同的。我做错了什么?
【问题讨论】:
-
尝试将 cpp 中的返回类型更改为
Octree::node*而不仅仅是node*。您也可以删除 typedef,在 C++ 中不需要它。 -
或者将struct node的typedef移到类外
-
他们也可以去掉
typedef,因为在C++中你不需要用struct来装饰struct的名字。 -
是否有可能,在定义(cpp 文件)中,您的命名空间被令牌“节点”的另一个定义弄乱了?