Containeriterator in Templateklasse deklarieren



  • Hallo,

    ich bin noch Anfänger und komme hier nicht weiter. Ich wäre dankbar, wenn jemand mal drüberschauen könnte.

    template<class T>
    class maximum{
    
    public:
    
    private:
      std::list<T> maxList;
    
      //std::list<T>::iterator myIter; //laeuft nicht
      std::list<T>::iterator;//laeuft
    
    };
    

    Eine Containerliste kann ich deklarieren, aber nicht den Iterator myIter. Adererseits wird die alleinige Typangabe akzeptiert(?).



  • std::list<T>::iterator ist ein abhängiger name (nämlich abhängig vom templateparameter T), d.h. du musst dem compiler hier helfen und sagen, dass dieser name einen typ bezeichnet:

    template <class T>
    class Foo
    {
    //...
       typename std::list<T>::iterator yourIter;
    };
    

    in diesem fall böte sich außerdem noch ein typedef an, um die verwendung zu vereinfachen:

    typedef typename std::list<T>::iterator iterator;
    iterator yourIter;
    


  • Vielen Dank. Jetzt klappts 🙂


Anmelden zum Antworten