class Tree {
struct Node {
int data;
Node *left,*right;
Node(int v, Node *n = NULL):data(v),left(n),right(n) {}
};
Node *root;
int size;
public :
Tree();
~Tree();
struct Node* GetRoot();
这是我的.h文件。当我在源文件上写下以下内容时:
struct Node* Tree::GetRoot() {
return root;
}
我从Eclipse收到以下警告:
- 未找到成员声明
有什么想法吗?我感觉自己像个尝试过的一切。
答案 0 :(得分:5)
在您的定义中,您需要指定私有结构的范围:
struct Tree::Node* Tree::GetRoot() {
// ^^^^^^
return root;
}
正如其他人在评论中指出的那样,值得注意的是,调用此功能的客户端无法直接访问Tree::Node
类型,只能使用auto
关键字:
Tree t;
auto root = t.GetRoot();
// pass the obtained value back
t.DoSomethingWithRoot(root);