我有一个名为“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()方法?
答案 0 :(得分:2)
将Draw
和Update
定义为基类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
指针上调用。