Template Funktion in Template Klasse schreiben



  • Wenn ich eine Template Funktion in einer Template Klasse selber ausprogrammiere, dann klappt das wunderbar:

    template <class Type>
    class Foo
    {
    public:
            Type item;
            template <class otherType>
            void bar(otherType b)
            {
                    this->item = b;
            }
    };
    

    Möchte ich sie aber ausserhalb der Klasse ausprogrammieren, dann wirft mir der g++ Fehler entgegen:

    template <class Type>
    class Foo
    {
    public:
            Type item;
            template <class otherType>
            void bar(otherType b);
    };
    
    template <class Type, class  otherType>
    void Foo<Type>::bar(otherType b)
    {
            this->item = b;
    }
    

    Die Fehlermeldung ist folgende:

    tst.cpp:11: error: prototype for ‘void Foo<Type>::bar(otherType)’ does not match any in class ‘Foo<Type>’
    tst.cpp:7: error: candidate is: template<class Type> template<class otherType> void Foo::bar(otherType)
    

    Leider kann ich an der Fehlermeldung nichts ablesen, was ich hier falsch geschrieben habe.

    Kann mich da jemand aufklären?


  • Mod

    So geht das:

    template <class Type>
    class Foo
    {
    public:
            Type item;
            template <class otherType>
            void bar(otherType b);
    };
    
    template <class Type>
    template <class otherType> void Foo<Type>::bar(otherType b)
    {
            this->item = b;
    }
    


  • Ahh, vielen Dank. 🙂


Anmelden zum Antworten