Pregunta

Duplicar posibles:
en C ++

Tengo dos clases: la clase abstracta "Juego" y la clase derivada "TestGame". Todas las funciones se implementan en TestGame por separado para nada (en aras de conseguir que se compile). Yo sólo estoy recibiendo un error:

TestGame.obj: LNK2019 de error: símbolo externo "público sin resolver: __thiscall virtuales del juego :: ~ Juego (void)" (?? 1Game @@ @ XZ EAU) se hace referencia en función "pública: __thiscall virtuales TestGame :: ~ TestGame (void)" (?? 1TestGame @@ UAE @ XZ)

Aquí están mis definiciones de clases:

class Game
{
public:
    virtual ~Game(void) = 0;

    virtual bool Initialize() = 0;
    virtual bool LoadContent() = 0;
    virtual void Update() = 0;
    virtual void Draw() = 0;
};

class TestGame: public Game
{
public:
    TestGame(void);
    virtual ~TestGame(void);

    virtual bool Initialize();
    virtual bool LoadContent();
    virtual void Update();
    virtual void Draw();
};

he intentado un par de cosas, pero me siento que tal vez me estoy perdiendo algo fundamental acerca de cómo la abstracción y derivar clases de obras.

¿Fue útil?

Solución

En realidad se necesita definir el destructor de la clase base, aunque es pura virtual, ya que se llamará cuando se destruye la clase derivada.

virtual ~Game() { /* Empty implementation */ }

El = 0 de pura virtual no es necesario, ya que tiene otras funciones virtuales puras para que su clase abstracta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top