template Klasse und Linker error
-
Hallo Leute
Ich habe eine Template Klasse die ich in der Header Datei definiere.
template<class T> class CSurePointer{
public:
T* GetPointer();
private:
T* m_pointer;
};Jetzt schreibe ich den Code der Funktion in die Quellcode Datei
template<class T> T* CSurePointer::GetPointer(){
return m_pointer;
}und ich bekomme lauter linkererror
error LNK2001: Nichtaufgeloestes externes Symbol "public: int * __thiscall CSurePointer<int>::GetPointer(void)" (?GetPointer@?$CSurePointer@H@@QAEPAHXZ)
Wenn ich die Klasse irgendwo benutze. Warum??
-
du musst die Implementierung in die gleiche Datei schreiben wie die Deklaration der Template Klasse, da der Compiler ansonsten die Implementierung nicht findet.
Wenn dein Compiler export beherscht (tut aber wohl nur der Comeau), dann kannst du das damit ändern
-
Hallo,
ich würde vorschlagen die cpp einfach in .templ umzubenennen, und diese am Ende des Headers zu Includieren. Damit hast Du es einfacher wenn export unterstützt wird.