Von Template-Klasse erben
-
Hallo zusammen,
ich stehe vor folgendem Problem:
Ich habe eine Template-Klasse geschrieben und möchte nun eine erbende Klasse erstellen, die jedoch KEINE Template-Klasse sein soll.Ein kleines Beispiel
Template-Klasse:
// basicitem.h template <class T> class BasicItem { public: BasicItem(); }; // basicitem.cpp template <class T> BasicItem<T>::BasicItem() { }Erbende Klasse:
//diritem.h class DirItem : public BasicItem<int> { public: DirItem(); }; //diritem.cpp template <class T> BasicItem<T>::BasicItem() { }Dieses Konstrukt resultiert leider in einem Linker-Fehler:
Undefined symbols:
"BasicItem<int>::BasicItem()", referenced from:
DirItem::DirItem()in diritem.o
DirItem::DirItem()in diritem.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [test2] Error 1Ich vermute einfach mal das sowas in C++ möglich ist ;-).
Kann mir da vielleicht jemand auf die Sprünge helfen?

Danke!
-
-
DerHandwerk schrieb:
//diritem.h class DirItem : public BasicItem<int> { public: DirItem(); };DirItem::DirItem wurde deklariert, aber nirgends definiert.
-
Super Danke für die schnelle Hilfe.
Ich habe einfach alles in die Header Datei gepackt (alles aus der .cpp Datei) und jetzt läuft es.
Habt vielen Dank!
-
DerHandwerk schrieb:
Ich habe einfach alles in die Header Datei gepackt (alles aus der .cpp Datei) und jetzt läuft es.
Auch die Definition von DirItem::DirItem, welche in einer Header-Datei nichts zu suchen hat (!) -- es sei denn, sie ist inline ?
-
krümelkacker schrieb:
DerHandwerk schrieb:
Ich habe einfach alles in die Header Datei gepackt (alles aus der .cpp Datei) und jetzt läuft es.
Auch die Definition von DirItem::DirItem, welche in einer Header-Datei nichts zu suchen hat (!) -- es sei denn, sie ist inline ?
Ich vermute mal dass er da einen copy&paste-fehler begangen hat und inder diritem.cpp auch der entsprechende Konstruktor definiert wurde und NICHT der Ctor von BasicItem.
@DerHandwerk, dir sei nahegelegt, vor der nächsten Frage die mit wichtig gekennzeichneten Threads durchzulesen und danach zu handeln, bevor du fragst - dzu gehört unter anderem das Lesen der FAQ und der Besuch von google.