Mam proste opakowania:Szablony i zagnieżdżone klasy/struktury
template <class nodeType> list {
public:
struct node {
nodeType info;
node* next;
};
//...
};
Teraz jest funkcja o nazwie _search
który przeszukuje listę i zwraca referencję do węzła, który dopasowane. Teraz, kiedy mówię o zwracaniu typu funkcji, myślę, że powinno to być list<nodeType>::node*
. Czy to jest poprawne? Kiedy zdefiniowania funkcji inline, działa perfekcyjnie:
template <class nodeType> list {
public:
struct node {
nodeType info;
node* next;
};
node* _search {
node* temp;
// search for the node
return temp;
}
};
Ale gdybym zdefiniować funkcję poza klasą,
template <class nodeType> list<nodeType>::node* list<nodeType>::_search() {
//function
}
to nie działa. Kompilator podaje komunikat o błędzie mówiąc: Expected constructor before list<nodeType>::_search
lub coś podobnego. Błąd jest podobny do tego. Nie mam maszyny, na której mogę ją przetestować.
Każda pomoc jest szczerze doceniana.
Więcej, bardzo geeky, szczegóły można znaleźć w C++ FAQ Lite: http://www.parashift.com/c++-faq-lite/templates.html#faq-35.18 –
wielkie dzięki za pomoc .. teraz działa idealnie. Jeszcze raz dziękuję .. –
Zaktualizowany link do FAQ: https://isocpp.org/wiki/faq/templates#dependent-name-lookup-tites – Ashe