Template einer Vererbten Klasse
-
Hallo!
Ich habe folgendes Problem:
CZ80Memory.h
class CZ80Memory { public: CZ80Memory(); template<typename T> void WriteMem(int dst, T value); };CZ80Memory.cpp
CZ80Memory::CZ80Memory() { memoryLength = 1024; memory = new char[memoryLength]; cout << memoryLength << " Bytes for memory reserved" << endl; } template<typename T> void CZ80Memory::WriteMem(int dst, T value) { }CZ80Emulator.h
class CZ80Emulator : public CZ80Memory { public: CZ80Emulator(); };CZ80Emulator.cpp
CZ80Emulator::CZ80Emulator() { cout << "Z80 Emulator erstellt" << endl; WriteMem<int>(3,3); }(unwichtige Stellen rausgeschnitten)
Normalerweise sollte die Funktion WriteMem ja jetzt auch in der Klasse CZ80Emulator vorhanden sein.
Wenn ich das Template-Zeug weg lasse, funktioniert es auch alles.
Aber ich brauche dringend dieses Template.
Was es macht sollte klar sein.
Sobald ich den Compiler anwerfe sagt er mirCZ80Emulator.cpp|10|undefined reference to `void CZ80Memory::WriteMem<int>(int, int)'|
Hat jemand von euch eine Ahnung, woran das liegen könnte?
Wäre wirklich sehr nett!
Liebe Grüße, Vito
-
Templatedefinitionen müssen zur Zeit der Instanzierung vorliegen, du kannst sie nicht in eine andere Quellcodedatei auslagern, oder kurz gesagt: Definier CZ80Memory::WriteMem in CZ80Memory.h.