Normale Klasse aus Template-Klasse ableiten
-
Hallo,
ich möchte aus der Template-Klasse base_tree
template<class C> class base_tree { ... public: base_tree(int num_sites_para); };eine normale Klasse tree ableiten:
class tree : public base_tree<node> { ... public: tree(int num_sites_para); };Hierbei ist node irgendeine Klasse.
Wenn ich den Konstruktor von tree jedoch mittels
tree::tree(int num_sites_para) : base_tree<node>(num_sites_para) { ... }versuche zu definieren, erhalte ich die Fehlermeldung
undefined reference to `vtable for tree'Es sei noch erwähnt, dass der Konstruktor von base_tree mittels
template<class C> base_tree<C>::base_tree(int num_sites_para) { ... }definiert ist.
Weiss jemand, wie man das behebt (und warum der Fehler auftritt)?
-
Hast du den Konstruktor für das Template in einer anderen Überseztungseinheit definiert? Wenn ja, dann liegt das daran, siehe hier http://www.c-plusplus.net/forum/viewtopic-var-t-is-39467.html
Felix
EDIT: Ansonsten musst du etwas mehr Code zeigen, denn in deinem Beispiel kommen ja gar keine virtuellen Methoden vor, d.h. der Compiler müsste auch keine vtable anlegen.