[C++] Template Problem

Ryu1991

Erfahrenes Mitglied
Hi,
Ich habe mir eine Container klasse für ein paar grafiken geschrieben, und dann festgestellt, dass ich sie doch besser als Template brauchen könnte, und habe infolge dessen versucht, sie entpsrechend umzubiegen.

Das ist der Header:
C++:
#pragma once

#include <Graphic.h>
#include <list>

namespace mg{

template<class T>
class Container
{
public:
	Container(int);
	~Container(void);

	void setVisible(bool);
	void setLayer(int);

	Container<T>& add(T*);
	Container<T>& remove(T*);
	void removeAll();
	void deleteAll();

	unsigned int size();

protected:
	std::list<T*> Graphics;
	unsigned int Layer;
};

typedef Container<Graphic> GraphicContainer;

}
So, wenn ich jetzt versuche ein Container Object zu erzeugen kriege ich immer folgende fehler:
Code:
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall mg::Container<class mg::Graphic>::~Container<class mg::Graphic>(void)" (****1?$Container@VGraphic@mg@@@mg@@QAE@XZ)" in Funktion ""public: void __thiscall mg::Game::run(void)" (?run@Game@mg@@QAEXXZ)".
1>Game.obj : error LNK2019: Verweis auf nicht aufgelöstes externes Symbol ""public: __thiscall mg::Container<class mg::Graphic>::Container<class mg::Graphic>(int)" (****0?$Container@VGraphic@mg@@@mg@@QAE@H@Z)" in Funktion ""public: void __thiscall mg::Game::run(void)" (?run@Game@mg@@QAEXXZ)".
Nur, dass Construktor, und destructor definitiv da sind:

C++:
...
template<class T>
Container<T>::Container(int layer):Layer(layer)
{
}

template<class T>
Container<T>::~Container(void)
{
}
...
Bevor ich das alles auf Template umgeschrieben hatte lief es auch noch.
Weiß jemand, was das zu bedeuten hat?

gruß me
 
Ein Templatetyp muss bei der Verwendung vollständig bekannt sein. Das heißt unter anderem, dass Funktionen im Header ihren Körper haben müssen.
 

Neue Beiträge

Zurück