我正在为任务分配游戏,但是在C ++中存在函数覆盖问题。

我有以下结构:

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

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

};


当从另一个类中创建一个敌人的实例时,将其存储在GameEntity向量中,然后在其上调用TakeHit(),这就是在调用它的GameEntity版本。我已经习惯了在Java中将其称为其他版本,在这里我做错了什么吗?

其他问题并不能真正解决这个问题,因此我创建了自己的问题。

我猜这可能很简单,因此很抱歉造成麻烦。

最佳答案

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;

存储指向对象(最好是smart pointers)而不是对象的指针。如果仅存储对象,则会遭受object slicing problem的困扰。

关于c++ - C++游戏代码无法正常工作,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26686082/

10-10 19:35