2017-01-19 3 views
0

Ich habe eine Template-KlasseTemplate Zeiger Initialisierung

template <class T> 
class MyTemplate 
{ 
public: 
    struct node 
    { 
     int a; 
    }; 
    MyClass(); 
    ~MyClass(); 
private: 
    static node* theNode; 
}; 

template <class T> 
MyClass::node* MyClass<T>::theNode = 0; 

Aber die Initialisierung von theNode versagt - Verwendung von Klassenvorlage erfordert Listenvorlage Argument Wenn ich die Erklärung

MyClass<T>node* MyClass<T>::theNode = 0; 

ich ändern

Fehler C2143: Syntaxfehler: fehlende ';' vor '*'

Kann mir bitte jemand sagen, wie die richtige Syntax ist?

+4

ist 'MyTemplate' soll sagen' MyClass'? –

+1

Tippfehler überall ... Fix it dann tun Verwenden: 'typename MyTemplate :: Knoten * MyTemplate :: theNode = 0;' – P0W

Antwort

6

einfach Ihre Definition ändern:

template<class T> 
typename MyClass<T>::node* MyClass<T>::theNode = 0; 
+0

Ist meine Antwort anachronistisch? – Bathsheba

+0

@Bathsheba Aber ich bin nicht der down Wähler – MRB

+2

Das ist eine Schande. Es ist nichts falsch daran, schreckliche Antworten zu verwerfen. Dafür ist der Mechanismus zuständig. (Ich habe das aufgewertet.) – Bathsheba

Verwandte Themen