继承基类,定义基类'原型方法,但称儿童班'第三个对象的方法

时间:2012-08-20 14:38:05

标签: c++ inheritance polymorphism prototype base-class

我有一个名为“Game”的类,其原型功能为“Update”和“Draw”,但它们没有定义。由继承“Game”对象的对象来覆盖它们。这可能吗?

“Game.h”的内容

class Game // does it have to abstract/virtual?
{
    public:
    //General stuff for all games here
}

void Update(Game *game) = 0; // or make it virtual in someway

“MyGame.h”的内容

#include "Game.h"

class MyGame : public Game
{
    public:
    // General stuff for my game
}

void Update(MyGame *game);

//“MyGame.cpp”的内容

#include "MyGame.h"

void Update(MyGame *game) // does it have to be overriden/overloaded?
{
}

//“GameManager.h”的内容

#include "Game.h"

class GameManager
{
    public:
    Game *game;
}

void Update(GameManager *manager);

//“GameManager.cpp”的内容

#include "Game.h"

void Update(GameManager *manager)
{
    Update(manager->game);
}

关键是最后一种方法: 当GameManager的Game对象= MyGame而不是游戏时,为什么GameManager不能调用MyGame Update()方法?

1 个答案:

答案 0 :(得分:2)

DrawUpdate定义为基类virtual中的Game方法。

class Game
{
public:
   virtual void Draw() {};
};

class MyGame : public Game
{
public:
   virtual void Draw() {}
};

void callDraw(Game* game) 
{
   game->Draw();
}

//...

Game* game = new MyGame;
callDraw(game);

最后一次通话会调用MyGame中的方法,尽管它会在Game指针上调用。