我正在进行二叉树实现,为此我有2个文件,一个头和一个实现.cpp文件。在头文件中,我在私有区域中声明了一个类' Node',并且在.cpp文件中我有一个函数返回' Node *'但是当我尝试编译我的代码我收到一个错误说"未知类型'节点'"在函数声明中。
相关代码:
//in .h
private:
class Node {
public:
Node* left;
Node* right;
int data;
Node(int n) {
this->data = n;
this->left = NULL;
this->right = NULL;
}
};
//in .cpp
Node* Binary_Ordered_Tree_int::insert(Node* n, int i) {
if(n == NULL) {
return new Node(i);
}
if(n->data <= i) {
n->right = insert(n->right, i);
}
else {
n->left = insert(n->left, i);
}
return n;
}
提前致谢。
答案 0 :(得分:2)
因为返回类型位于函数名称(及其包含的类)之前,所以编译器不知道它必须查看类。所以你要么告诉它:
Binary_Ordered_tree_int::Node* Binary_Ordered_tree_int::insert(Node* n, int i)
或者,如果您有C ++ 11可用,则使用尾随返回类型,以便返回类型位于类的上下文中:
auto Binary_Ordered_tree_int::insert(Node* n, int i) -> Node*