我正在为任务分配游戏,但是在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/