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 Zeile

    class 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.


Anmelden zum Antworten