从基类中覆盖函数有点麻烦。从基类覆盖函数
这是我的游戏对象类:
namespace GameEngine {
class GameObject {
public:
virtual void render() {
std::cout << "Render Game Object" << std::endl;
}
};
}
这是我的播放器类:
class Player : public GameEngine::GameObject {
public:
void render() {
std::cout << "Render Player" << std::endl;
}
};
在MainComponent.cpp我有GameObjects的载体,和我遍历它们,使它们
Player player;
vector<GameEngine::GameObject> gameObjects;
void MainComponent::init() {
gameObjects.push_back(player);
gameLoop();
}
void MainComponent::render() {
for(int i = 0; i < gameObjects.size(); i++) {
gameObjects[i].render();
}
}
我希望这段代码输出“渲染播放器”,因为gameObjects中的唯一对象ctor是播放器,但是它输出“渲染游戏对象”。有没有一种方法可以强制GameObject向量中的Player对象使用Player渲染器而不是GameObject渲染器?
这与重载无关。 'Player :: render' **覆盖**'GameObject :: render'。 –
@PeteBecker你说得对,我的错误,我编辑的职位,以反映这一点。 – shadowarcher