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.hclass 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