從基類中覆蓋函數有點麻煩。從基類覆蓋函數
這是我的遊戲對象類:
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