我正在执行一个二叉树实现,为此我有 2 个文件,一个头文件和一个实现 .cpp 文件。在头文件中,我在私有(private)区域中声明了一个类“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;
}
提前致谢。
最佳答案
因为返回类型出现在函数名(及其包含的类)之前,编译器不知道它必须查看类内部。所以你要么告诉它:
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*
关于c++ - 尝试使用在 cpp 文件的头文件中声明的私有(private)类时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29078997/