Bitte um Hilfe beim Syntaxfehler



  • Vielleicht bin ich blind, aber ich komme nicht dahinter, warum der folgende (vereinfachte und in nur eine Quelldatei komprimierte) Code nicht compiliert:

    template <class T > class Vec {
    public:
       typedef T* iterator;
       iterator erase (iterator);
    private:
       iterator data, avail, limit;
    };
    
    template <class T> 
         Vec<T>::iterator
               Vec<T>::erase     /* <--  error: expected constructor, destructor,
                                               or type conversion before 'Vec' */
                   (Vec<T>::iterator position){
       return position;
    }
    
    int main() {return 0;}
    

    Danke, fuer Eure Tipps


  • Mod

    template <class T>
    typename Vec<T>::iterator Vec<T>::erase(typename Vec<T>::iterator position){
       return position;
    }
    


  • Hi,

    da iterator vom Templateparameter T abhängig ist, gehört davor ein typename 😉

    template <class T>
    typename Vec<T>::iterator Vec<T>::erase(...)
    

    Und geben deinem Threadtitel das nächste mal einen besseren Namen, wie in diesem Fall zB "Fehler bei Templatedefinition".



  • Besten Dank !! Ich hab's total vergessen ...


Anmelden zum Antworten