Vorlagen und verschachtelte Klassen / Strukturen

8

Ich habe einen einfachen Container:

%Vor%

Nun gibt es eine Funktion namens _search , die die Liste durchsucht und einen Verweis auf den übereinstimmenden Knoten zurückgibt. Nun, wenn ich mich auf den Rückgabetyp der Funktion beziehe, denke ich, dass es list<nodeType>::node* sein sollte. Ist das richtig? Wenn ich die Funktion inline definiere, funktioniert es perfekt:

%Vor%

Aber wenn ich die Funktion außerhalb der Klasse definiere,

%Vor%

es funktioniert nicht. Der Compiler gibt einen Fehler aus, der Expected constructor before list<nodeType>::_search oder etwas sagt. Der Fehler ist etwas Ähnliches. Ich habe keine Maschine, auf der ich es derzeit testen kann.

Jede Hilfe wird herzlich geschätzt.

    
Rohan Prabhu 07.11.2009, 19:02
quelle

2 Antworten

21

Das liegt daran, dass node ein abhängiger Typ ist. Sie müssen die Signatur wie folgt schreiben (beachten Sie, dass ich es aus Gründen der Klarheit in zwei Zeilen unterteilt habe)

%Vor%

Beachten Sie die Verwendung des typename -Schlüsselworts.

    
rlbond 07.11.2009, 19:04
quelle
6

Sie müssen dem Compiler mitteilen, dass node ein Typ ist, der das Schlüsselwort typename verwendet. Andernfalls wird der Knoten als static Variable in class list betrachtet. Fügen Sie typename hinzu, wenn Sie den Knoten als Typ in Ihrer Implementierung der Liste verwenden.

    
Ponting 07.11.2009 19:08
quelle