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.


Anmelden zum Antworten