undefined reference bei Verwendung einer Template-Klasse
-
Hi,
ich habe gerade meine erste Template-Klasse geschrieben (Juhu!) aber noch ein kleiner Problem:
#ifndef X_H #define X_H template <class T> class X; ... using namespace std; template <class T> class X { ... void print() const; ... };
Und im .cpp-file:
#include <fstream> #include "X.h" // I/O-Methods template<class T> void X<T>::print() const { ... }
Soweit, sogut! Wenn ich jetzt mit meinem g++ 3.2 unter Suse 8.1 übersetze, kommt folgende Fehlermeldung:
main.o: In function
Test()': main.o(.text+0x113): undefined reference to
X<double>::print() const'
collect2: ld returned 1 exit status
make: *** [main] Fehler 1Anderer Versuch: Den ganzen Mist statt ins .cpp-file ins .h-file klatschen:
#ifndef X_H #define X_H template <class T> class X; ... using namespace std; template <class T> class X { ... void print() const { // hier stehen die Anweisungen von print drin } ... };
und schon läufts. Als wissbegieriger Mensch würde ich jetzt aber gern wissen: Wieso klappt es jetzt
? Und was muss ich machen damit Variante 1 auch funktioniert?
Vielen Dank, LIBS
-
Als wissbegieriger Mensch sollte man zuerst in die FAQ schauen:
http://www.c-plusplus.net/forum/viewtopic.php?t=39467
-
Oh, dankeschön ... habe diesmal glatt vergessen in die FAQ zu schauen!
MfG LIBS