typedef als Rückgabewert



  • Hallo

    Ich möchte folgendes machen, allerdings gibt mir der Compiler immer folgende Fehlermeldung in der cpp-Datei:
    line 7: error: expected constructor, destructor, or type conversion before "myclass"

    hier mein h-File:

    #include <vector>
    
    template <class T>
    class myclass
    {
    public:
        typedef typename std::vector<T>::iterator myiterator;
        myclass();
        ~myclass();
        myiterator getIterator();
    private:
        std::vector<T> v;
    };
    

    und hier mein cpp-File:

    #include "myclass.h"
    
    template <class T> myclass<T>::myclass() : v() { }
    
    template <class T> myclass<T>::~myclass() { }
    
    template <class T> myiterator myclass<T>::getIterator()
    {
        return v.begin();
    }
    

    Ich weiss einfach nicht was ich falsch mache. Ich habe auch gedacht, dass das vielleicht nicht geht wegen den templates aber ich habe auch schon ein typedef mit int versucht mit dem gleichen resultat. Wenn ich den per typedef definierten typ als parameter angebe funktioniert es ja auch, wieso kann ich ihn dann nicht auch als Rückgabewert nehmen?
    Vielen Dank schonmal für eure Hilfe.



  • 1. Templates können (normalerweise) nicht wie üblich in Dekl. und Impl. getrennt werden. (suche mal zu dem Thema).
    2. Der Rückgabewert ist nicht mehr im Klassenscope bei der Definition. Da aber dein typedef innerhalb der Klasse ist, wird er nicht gefunden.

    Simon



  • nimm mal das typename weg



  • DocJunioR schrieb:

    nimm mal das typename weg

    Nein, das wird da benötigt. Den Rest hat Simon bereits gesagt.


Anmelden zum Antworten