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


Anmelden zum Antworten