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.