Poniżej jest moja klasa index.h

class index
{

struct node {
        string item;
        int counter;
        vector<int> pageNumber;
    };

public:
    node* newNode (string word);
    ...

private:
    vector<node*> indexStructure;
    int lineCounter;
    int indexSize;

};

W mojej klasie index.cpp mam następującą definicję metody:

node* index::newNode (string word)
{
    node* temp = new node();
    temp.item = word;
    temp.counter = 1;
    temp.pageNumber = new vector <int> (10, -1);
    temp.pageNumber[0] = lineCounter / 40;
    return temp;

}

Kiedy kompiluję, mówi mi „węzeł nie nazywa typu”, mimo że jest zdefiniowany w strukturze w index.h, a moja prywatna zmienna wektora może mieć typ node*.

0
Sunny Liu 28 wrzesień 2012, 04:39

2 odpowiedzi

Najlepsza odpowiedź

node jest klasą zagnieżdżoną w index i dlatego jest nazywana index::node w globalnej przestrzeni nazw.

Zauważ, że możesz pominąć index:: z treści funkcji i dlatego wystarczy powiedzieć index::node w podpisie w pliku cpp, ponieważ znajduje się on w "globalnej przestrzeni nazw".

7
leemes 28 wrzesień 2012, 04:41

Zmień go na index::node* index::newNode(string word). Zakres niezbędny do zrobienia tego w sposób, w jaki próbujesz, jest ustalany dopiero po zakończeniu nazwy funkcji.

2
ildjarn 28 wrzesień 2012, 04:40