Templateproblem mit list<T>



  • Hallo Leute!

    Ich habe ein kleines Problem mit einer Klassentemplate. In dieser Klassentemplate brauche ich eine List um Objekte vom Typ T zu speichern und einen iterator, der mir auf ein bestimmtes Element der Liste zeigt. So sieht das Ganze in etwa aus:

    #include <list>
    
    using namespace std;
    
    template <class T> class TemplateProblem
    {
    public:
    	// ...
    
    private:
    	// Diese Deklaration funktioniert.
    	list<T> elements;
    
    	// Diese Deklaration funktioniert nicht mehr.
    	list<T>::iterator currElement;
    };
    

    Bei der Deklaration von list<T>::iterator currElement bekomme ich den Fehler:

    g++ schrieb:

    error: need 'typename' before 'std::list<T>::iterator' because 'std::list<T>' is a dependent scope

    Das Problem hängt wohl damit zusammen, dass der Templateparameter für list<T>::iterator selbst ein Templateparameter der Klasse 'TemplateProblem' ist. Ich brauche aber diesen Iterator. Wie kann ich das Problem lösen?



  • Wie Dein Compiler schon sagt:

    typename list<T>::iterator currElement;



  • lol wusste ich auch noch nicht...

    aber guckst du hier



  • Danke für die schnellen Antworten! Die Lösung ist schlussendlich ganz einfach.


Anmelden zum Antworten