2016-06-07 13 views
0

Ich habe eine geschachtelte Klasse innerhalb einer Vorlagenklasse und möchte ihren Konstruktor außerhalb des Bereichs implementieren. Allerdings bekomme ich folgende Fehlermeldung:Konstruktor verschachtelter Klassen von Vorlagen Klassen in C++

expected unqualified-id before ')' token

template<class T> 
class mainClass { 
private: 
    class nestedClass { 
    public: 
     nestedClass(); 
    }; 
}; 

template<class T> 
typename mainClass<T>::nestedClass::nestedClass(){ 
    // code here 
} 
+0

Entfernen Sie den 'typename'. – LogicStuff

Antwort

0

Entfernen Sie die typename:

template<class T> 
mainClass<T>::nestedClass::nestedClass(){ 
    // code here 
} 

Live Demo

Für weitere Informationen über, in welchen Kontexten brauchen wir typename sehen here zu verwenden.

+0

Es funktioniert nicht. Ich denke, es muss einen Typnamen für den Compiler haben, um zu erkennen, dass NestedClass ein Typ ist und nicht etwas anderes (z. B. eine statische Variable oder eine Funktion). –

+0

@GuyWaldman Nein in diesem Kontext brauchen Sie nicht 'typename'. – 101010

0

Es scheint, mein Problem betraf einen anderen Fehler, den ich bisher nicht bemerkt hatte. In jeder Hinsicht ist es wahr, dass typename in dem Kontext nicht erforderlich war, in dem es verwendet wurde.

Vielen Dank.