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

时间:2016-01-01 17:15:32

标签: 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();

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

struct Node* Tree::GetRoot() {
      return root;
}

我从Eclipse收到以下警告:

- 未找到成员声明

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

1 个答案:

答案 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);