Fehler beim Erstellen eines Templates, das von einem anderen Template ableitet
-
Ich habe folgenden Code:
template<class T> class Template { protected: int variable; }; template<class T> class Template2: public Template<T> { public: void Funktion () { variable=0; } }; int main () { }Und es erscheint folgende Fehlermeldung:
Test.cpp: In member function
void Template2<T>::Funktion()': Test.cpp:16: error:variable' undeclared (first use this function)Wieso kann er die Variable nicht finden? Die ist doch oben im ersten Template deklariert.
Wenn ich die Zeileclass Template2: public Template<T>in
class Template2: public Template<int>umwandle, funktioniert es übrigens.
-
this->variable = 0;Du musst das this dazuschreiben, weil das Basisklassentemplate sonst nicht im Name Lookup berücksichtigt wird. Der Grund ist die Möglichkeit, dass du das Basisklassentemplate so spezialisieren kannst, dass variable nicht existiert.
-
Vielen Dank für die Hilfe.