gpt4 book ai didi

c++ - 尝试使用在 cpp 文件的头文件中声明的私有(private)类时遇到问题

转载 作者:行者123 更新时间:2023-11-30 03:55:21 25 4
gpt4 key购买 nike

我正在执行一个二叉树实现,为此我有 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com