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*.
2 odpowiedzi
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".
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.
Podobne pytania
Nowe pytania
c++
C ++ to język programowania ogólnego przeznaczenia. Pierwotnie został zaprojektowany jako rozszerzenie C i ma podobną składnię, ale teraz jest to zupełnie inny język. Użyj tego tagu w przypadku pytań dotyczących kodu (który ma zostać) skompilowany za pomocą kompilatora C ++. Użyj znacznika specyficznego dla wersji w przypadku pytań związanych z określoną wersją standardu [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] lub [C ++ 23] itp. .