返回结构的类函数,该结构是该类的私有成员

Ale*_* F. 2 c++

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();
Run Code Online (Sandbox Code Playgroud)

这是我的.h文件.当我在源文件上写下以下内容时:

struct Node* Tree::GetRoot() {
      return root;
}
Run Code Online (Sandbox Code Playgroud)

我从Eclipse获得以下警告:

- 未找到成员声明

有什么想法吗?我感觉自己像个尝试过的一切

πάν*_*ῥεῖ 5

在您的定义中,您需要指定私有结构的范围:

struct Tree::Node* Tree::GetRoot() {
    // ^^^^^^
    return root;
}
Run Code Online (Sandbox Code Playgroud)

正如其他人在评论中指出的那样,值得注意的是,调用此函数的客户端无法Tree::Node直接访问该类型,而只能使用auto关键字:

Tree t;
auto root = t.GetRoot();

// pass the obtained value back
t.DoSomethingWithRoot(root);
Run Code Online (Sandbox Code Playgroud)