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 mir

    CZ80Emulator.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


  • Mod

    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.


Anmelden zum Antworten