problem bei konvertierung
-
hallo,
ich hab mal vor einiger zeit eine liste in borland c++ builder 4 geschrieben.
nun, da ich sie in vc++ implementiert hab geht sie nicht mehr
ich bekome immer folgende fehlermeldung die ich nicht wirklich interpretieren kanntest error LNK2001: Nichtaufgeloestes externes Symbol "public: __thiscall LISTE<int>::~LISTE<int>(void)" (??1?$FQAE@XZ)
vieleicht kann mir einer weiterhelfen in dem er mr sagt was das bedeutet .. die komplette liste werde ich hier nicht auffüren, weil das z ulang ist .. aber hier sit mal die klassendefinition und der kon-/destruktor
klasse liste:
#include <ios> #include <iostream> template <class T> class LELEM; template <class T> class LISTE //einfach verkettete liste { LELEM<T> *anf; //pointer auf den anfang der liste LELEM<T> *akt; //pointer auf die aktuelle position inerhalb der liste public: LISTE (void); ~LISTE (void); void ins (T wert); //insert: ein element einfügen void del (void); //delete: ein element löschen T get (void); //wert an der aktuellen stelle auslesen void set (T wert); //wert an der aktuellen stelle setzen void adv (int index); //advance: gehe ein element in der liste weiter oder geht zu index void res (void); //reset: setzt die aktuelle position an den anfang int empty (void); //ist die liste leer? int end (void); //ist man am ende der liste? }; template <class T> class LELEM //listenelement einer einfach verketteten liste { T element; //ein element einer einfach verketteten liste LELEM<T> *nf; //zeiger auf das nachfolgende element public: LELEM (void); friend class LISTE<T>; };
kon-/destruktor:
//////////////////////////////////////////////////////////////////////////////// // KLASSE: LISTE --> Konstruktor // //////////////////////////////////////////////////////////////////////////////// template <class T> LISTE<T> :: LISTE (void) { anf = new LELEM<T>; akt = anf; } //////////////////////////////////////////////////////////////////////////////// // KLASSE: LISTE --> Destruktor // //////////////////////////////////////////////////////////////////////////////// template <class T> LISTE<T> :: ~LISTE (void) { akt = anf; while (!empty ()) //solange löschen bis liste leer ist { del(); } delete anf; //dummy LELEM löschen }
danke wie immer schon mla im vorraus !
ps: stl liste will ich diesem fall mal net
also keine antworten in die richtung bitte.
-
fehler gefunden !
-> ich durfte die funktionen net in einer cpp inline schreiben sondern musste sie in der .h definieren ..
kann mir nun vieleicht einer sagen warum ?
-
Der Compiler muss T auflösen können, sonst kann er die Methode nicht erstellen und wenn sie nicht da ist, kann der Linker sie nicht finden...
Und der Compiler kann sie nur auflösen, wenn er die Funktion kennt, sie also in der .h steht. Laut Standard gibt es das Schlüsselwort "export", das unterstützt aber kaum ein Compiler.