Problem bei Deklaration einer static (Template-)Methode [gelöst]



  • Hi,

    ich möchte eine statische Methode implementieren.
    So gehts:

    class C
    {
    public: 
     C(void);
     ~C(void);
    
     template<typename T>
     static void cleanup(CList<T, T>* pList)
     {
       foo(pList);
     }
    };
    

    Wenn ich aber die Methodendefinition in die cpp-Datei verschiebe (wie üblich), dann bekomme ich einen Linkererror:

    error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: static void __cdecl C::cleanup(...

    Sprich, so gehts irgendwie nicht:

    C.h:
    
    class C
    {
    public: 
     C(void);
     ~C(void);
    
     template<typename T>
     static void cleanup(CList<T, T>* pList);
    };
    
    ----------------
    C.cpp:
    
    #include "C.h"
    template<typename T>
    static void C::cleanup(CList<T, T>* pList)
    {
      foo(pList);
    }
    

    Jemand ne Idee, warum das so ist?
    Gruß, Thomas



  • Die Funktionsdefinition muss mit in die Headerdatei. Bei Templates müssen Deklaration und Definition in einer Datei stehen. Wurde schon sehr oft hier gesagt.

    Greetz



  • Stimmt, sorry - sehe ich gerade.
    Danke für den Tipp.


Anmelden zum Antworten