template Probleme
-
Hi,
ich versuche gerade, eine einfach verkettete Liste als Template zu erstellen. Diese soll von der Template-Klasse Liste abgeleitet sein.Mein Code sieht wie folgt aus:
#if !defined(AFX_LIST_H__ACE3FD8F_B06F_4A79_9410_B1FA825F62E1__INCLUDED_) #define AFX_LIST_H__ACE3FD8F_B06F_4A79_9410_B1FA825F62E1__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "SingleChainedList.h" template <class T> class List { private: class Iterator; //********************************************** template <class T> class ListElement { private: public: T Data; ListElement<T>* Next; ListElement() { } ~ListElement() { } // ListElement(T data); }; //********************************************** class Iterator { private: ListElement* It; public: bool operator != (Iterator iterator) { if (iterator.It != It) { return true; } else { return false; } } bool operator == (Iterator iterator) { if (iterator.It == It) { return true; } else { return false; } } Iterator& operator++() // preincrement { (*this).It = (*(this)->It).Next.It; return *this; } void operator=(Iterator value) { this->It = value.It; } T& operator*() { return &(It->Data); } T* operator->() { return &(It->Data); //Adresse?? } Iterator(T* param = 0) { It = param; } ~Iterator () { } friend class List<T>; }; //********************************************** public: ListElement<T>* First; ListElement<T>* Last; Iterator& GetFirst() { return First; } static Iterator& GetLast() { return Last; } // static Iterator& end() // { // return ScreenObject::itEnd; // } virtual void Append (T data) = 0; virtual void Clear (); List() { First = 0; Last = 0; } virtual ~List() { } }; #endif // !defined(AFX_LIST_H__ACE3FD8F_B06F_4A79_9410_B1FA825F62E1__INCLUDED_)
// SingleChainedList.h: interface for the SingleChainedList class. // ////////////////////////////////////////////////////////////////////// #if !defined(AFX_SINGLECHAINEDLIST_H__B6D70865_A4A7_4A4A_B05B_9694F0271671__INCLUDED_) #define AFX_SINGLECHAINEDLIST_H__B6D70865_A4A7_4A4A_B05B_9694F0271671__INCLUDED_ #if _MSC_VER > 1000 #pragma once #endif // _MSC_VER > 1000 #include "List.h" template <class T> class SingleChainedList : public List<T> { private: public: virtual void Append (T data) { if (First == 0) { First = new ListElement<T>; Last = First; } else { Last->Next = new ListElement<T>; Last = Last->Next; } Last->Next = 0; Last->Data = data; } SingleChainedList(); virtual ~SingleChainedList(); }; #endif // !defined(AFX_SINGLECHAINEDLIST_H__B6D70865_A4A7_4A4A_B05B_9694F0271671__INCLUDED_)
Ich bekomme die Fehler:
Main.obj : error LNK2001: unresolved external symbol "public: virtual __thiscall SingleChainedList<int>::~SingleChainedList<int>(void)" (??1?$SingleChainedList@H@@UAE@XZ) Main.obj : error LNK2001: unresolved external symbol "public: __thiscall SingleChainedList<int>::SingleChainedList<int>(void)" (??0?$SingleChainedList@H@@QAE@XZ) Debug/Lists Console.exe : fatal error LNK1120: 2 unresolved externals Error executing link.exe.
Was mache ich falsch?
-
bitte löschen
-
Sorry, habs gelöst