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.


Anmelden zum Antworten