rein virtuelle basisklasse



  • hey leutz...

    aso, ich habe eine basisklasse mit 4 rein virtuellen funktionen und einem
    daten-member.

    wenn ich jetzt EINE klasse davon ableite -> kein problem.
    wenn ich ZWEI ableite -> compiler error: basisklasse undefiniert

    hier mal die klassen und dateien:

    //GameState.h
    #ifndef __GAME_STATE
    #define __GAME_STATE
    
    #include "Game.h"
    
    class CGameState
    {
     //kein constructor/destructor
    public:
     virtual void Render ( float fTime) = 0;
     virtual void Move ( float fTime) = 0;
    
     virtual void Init () = 0;
     virtual void Exit () = 0;
    
    private:
     CGame* m_pGame;
    };
    #endif
    
    //Intro.h
    #ifndef __INTRO_H
    #define __INTRO_H
    
    #include "GameState.h"
    
    class CIntro : public CGameState
    {
    private:
     virtual void Render ( float fTime);
     virtual void Move ( float fTime);
    
     virtual void Init ();
     virtual void Exit ();
    };
    
    #endif
    
    //Intro.cpp
    //implemetirung der ganzen funtionen
    
    //Intro.h
    #ifndef __PLAY_H
    #define __PLAY_H
    
    #include "GameState.h"
    
    class CPlay : public CGameState
    {
    private:
     virtual void Render ( float fTime);
     virtual void Move ( float fTime);
    
     virtual void Init ();
     virtual void Exit ();
    };
    
    #endif
    
    //Play.cpp
    //implemetirung der ganzen funtionen
    

    soweit zu den dateien...

    in der doc steht, dass der fehler wahrscheinlich
    mit einer deklaration mit "extern" verhindert werden kann...

    naja, bis dann man, ich



  • also der code scheint keine fehler zu haben. vieleicht hast du gegenseitige includes 😕



  • Es ist zwar nicht direkt zu deiner Frage, aber eine Basisklasse sollte immer einen virtuellen Destruktor bereitstellen! Sonst wirst du über kurz oder lang deinem Speicher au revoir sagen können. 😉



  • GPC schrieb:

    Es ist zwar nicht direkt zu deiner Frage, aber eine Basisklasse sollte immer einen virtuellen Destruktor bereitstellen!

    Nein, sowas hängt von verschiedenen Faktoren ab. HumeSikkins hat erst kürzlich mal gepostet, an welcher Grundregel man sich dabei orientieren kann. Wie auch immer, in LUZA's Fall wäre ein virtueller dtor für CGameState natürlich sinnvoll.


Anmelden zum Antworten