Ciao a tutti...

Stavo provando a realizzare un piccolo plagio di M$ su linux e mi sono imbattuto in questo errore (stavo cercando di implementare una classe Game come quella di XNA... fosse anche solo per vedere se avevo capito come funziona):

codice:
/home/michele/Programmazione/Game/GameTypes.h|52|undefined reference to `vtable for Game'|
questo errore si verifica sul costruttore della classe Game

codice:
class Game
{
    ... // variabili
    public:

    Game(int FPS = 60)
    {
        .. // inizializzazioni
    }

    virtual void LoadContent();
    virtual void Update();
    virtual void Draw();
    virtual void UnloadContent();
}
In realtà sono abbastanza sicuro di sapere che l'errore nasce da questa linea che crea un'istanza della classe derivata:

codice:
class TestGame : public Game
{
     ...
     TestGame(int fps = 60) : Game(fps) { }
     ...
}
che sarebbe un tentativo di chiamare il costruttore della base class senza fare altro. Riesco senza problemi a istanziare la classe Game direttamente, ma istanziando la classe TestGame così:

codice:
game = new TestGame(60);
ottengo l'errore detto sopra (game è dichiarato come TestGame*).

Ho cercato su google (senza capirci molto, peraltro) cosa sia la vtable... e da quello che ho capito serve per i metodi virtuali. Ma il costruttore non è virtuale... quindi, perchè mi dice che non c'è la vtable di Game? :master:

Update:

Dopo aver smanacciato un po' sul codice tentando di risolverlo, ora non è più possibile istanziare Game direttamente.

codice:
Game* gameptr;
gameptr = new Game(60);
porta allo stesso errore di prima -.-