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:

Декларация члена не найдена

Есть идеи? Мне кажется, что я уже все перепробовал.

Alex R.

Ответов: 1

Ответы (1)

В вашем определении вам нужно указать область видимости частной структуры:

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

Как отметили другие в комментариях, примечательно, что клиент, вызывающий эту функцию, не может получить доступ к типу Tree::Node напрямую, а только используя ключевое слово auto:

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

// pass the obtained value back
t.DoSomethingWithRoot(root);

2022 WebDevInsider