2014-11-01 64 views
0

我正在爲一項任務開發遊戲,並遇到了C++中覆蓋函數的問題。C++遊戲代碼無法正常工作

我有以下結構:

class GameEntity 
{ 
public: 
    bool GameEntity::TakeHit(int dmg); 
}; 

class Enemy : public GameEntity 
{ 
    bool Enemy::TakeHit(int dmg); 

}; 

當從另一個類我製造一個敵人的情況下,將其存儲在GameEntity載體,然後在其上調用TakeHit(),它調用的GameEntity版本它。我習慣了Java,在這裏可以調用其他版本,我在這裏做了什麼明顯的錯誤?

其他問題並沒有真正涵蓋這個,所以我創建了我自己的。

這可能是非常簡單的事情,我猜測,所以爲這個麻煩道歉。

回答

1

GameEntity的功能需要virtual關鍵字。

2
  1. 使TakeHit成爲虛擬成員函數。

    // You don't need the scope specifier GameEntity:: 
    // Make it pure virtual to force sub-classes to implement them. 
    virtual bool TakeHit(int dmg) = 0; 
    
  2. 商店對象指針,優選smart pointers,代替對象。如果您僅存儲對象,則受到object slicing problem的影響。