Komischer Fehler LNK2001



  • Hallo,

    ich erhalte beim Kompilieren in VS C++ immer folgenden Fehler, den ich nicht auflösen kann:

    SpanningTrees error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall VERTEX<char>::VERTEX<char>(void)" (??0?VERTEX@D@@VERTEX@D@@$FQAE@XZ)

    In meiner Header-Datei habe ich unter anderem folgendes stehen:

    ...
    
    template <class T>
    class BASE {
    
    private:
    
    	BASE<T> *nextVertex;
    	BASE<T> *edge;
    	bool marked;
    
    public:
    	BASE<T>();
    	BASE* getVertex();
    	BASE* getEdge();
    	void setVertex(BASE<T> *vertex);
    	void setEdge(BASE<T> *edge);
    	void setMarker(bool marker);
    	bool getMarker();
    };
    
    template <class T>
    class VERTEX : public BASE<T> {
    
    private:
    	T atom;
    
    public:
    	VERTEX<T>();
    	void setAtom(T atom);
    	T getAtom();
    
    };
    
    ...
    

    Die Klasse VERTEX wird duch folgende Datei implementiert:

    #include "SpanningTrees.h"
    
    template <class T>
    VERTEX<T>::VERTEX<T>() {
    
    }
    
    ...
    

    In der Main-Klasse instanziiere ich anschließend ein Objekt vom Typ VERTEX folgendermaßen:

    VERTEX<char> vertex = VERTEX<char>();
    

    Genau das mag er aber nicht. Ich kann mir das irgendwie nicht erklären. Wenn ich diese Instanziierung weg lasse, dann funktionierts...

    Vieleicht kann mir hier irgenwer weiter helfen, das wäre super!

    Gruss
    Steff



  • Die Klasse VERTEX wird duch folgende Datei implementiert:

    Steht das in ner .cpp ?

    Wenn ja pack das mit in den header vzw. benenne die .cpp in z.B. templ um und includiere die im Header.

    Mit der suchfunktion des Forums kannst Du einige Threads zum Thema templates und Header bzw. cpp finden.


Anmelden zum Antworten