Linker Fehler (Ich checks einfach nicht)



  • Hi zusammen erstmal,

    ich habe hier schon seit 1-2 Stunden so einen Fehler, der mich in den Wahnsinn treibt (... Nicht auflösbares externes 'int ClassA::func<int>(...)....)

    (Ich habe extra ein neues Projekt angelegt um den Fehler einzugrenzen, es gibt also nicht wirklich viel mehr Quellcode, als was ich nun aufliste):

    _________________LÄUFT NICHT_______________________
    ClassA.h

    class CClassA
    {
    public:

    template<class T>
    int func(T* _val);
    }

    ClassA.cpp

    #include "ClassA.h"

    template<class T>
    int CClassA::CClassA(T* _val)
    {
    return 0;
    }
    ______________LÄUFT______________________________

    ClassA.h

    class CClassA
    {
    public:

    template<class T>
    int func(T* _val)
    {
    return 0;
    }
    }
    ___________________________________________________

    Ich raffs einfach nicht, da ich bereits an anderer Stelle Templates verwende und es dort 1:1 klappt. Ich habe noch zwar diverse Schreibweisen mit spitzen Klammern ausprobiert... aber letztendlich läuft es ja an anderer Stelle.

    Ich habe zu Testzwecken eine _nicht_ Template Funktion hinzugefügt. Diese findet Der Linker und es gibt kein Problem.

    Falls jemand sofort sieht wo das Problem ist, dann wäre ich dankbar^^.
    Alternativ lass ich die Funktionalität jetzt erstmal im Header -.-

    Schöne Grüße



  • Hallo

    Das ist der Nachteil von Templates gleich welcher Art : Beim konkreten Instanzieren eines Templates muß nicht nur die Deklaration bekannt sein, sondern die komplette Implementation. Deshalb wird Variante I niemals laufen. Variante II ist die einzige Möglichkeit.

    bis bald
    akari


Anmelden zum Antworten