Aus dem Template geerbte Funktion definieren geht nicht



  • Servus,

    folgender Code

    template<typename T>
    class Foo
    {
    public:
        int Bar(T baz);
    };
    
    class Derived: public Foo<int>
    {};
    
    int Derived::Bar(int baz)
    {
        // do something
    }
    

    kompiliert nicht mit der Meldung:

    test.cpp:15: error: no ‘int Derived::Bar(int)’ member function declared in class ‘Derived’

    Sollte die nicht geerbt werden?

    Gruß,
    Phil


  • Mod

    PhilippM schrieb:

    test.cpp:15: error: no ‘int Derived::Bar(int)’ member function declared in class ‘Derived’

    Sollte die nicht geerbt werden?

    Das bedeutet nicht, dass du die Definition erst in Derived machen kannst, es sei denn, du redeklarierst.



  • Edit: Nichts.



  • Okay danke, dann muss ich das wohl anders machen.

    Wenn Derived nicht noch weitere member bekommt, dann geht ja das:

    typedef Foo<int> Derived;
    
    template<>
    int Derived::Bar(int)
    {
    }
    


  • typedef Foo<int> Derived;
    

    Da ist aber der Name "Derived" ziemlich irreführend.

    Was möchtest du genau erreichen? Willst du eine Spezialisierung von Foo für int einrichten? Brauchst du überhaupt ein Template?


Anmelden zum Antworten