Enemy.h
class Enemy
{
int hp;
public:
Enemy(int);
void setHP(int);
int getHP();
virtual int attack() = 0;
};Enemy.cpp
Enemy::Enemy(int playerXP)
{
if (playerXP == 0) {
hp = rand() % 5 + 1;
}
else if (playerXP > 0) {
hp = rand() % (playerXP * 5) + 1;
}
}
void Enemy::setHP(int currentHP)
{
hp = currentHP;
}
int Enemy::getHP()
{
return hp;
}Reaper.h
#pragma once
#include "Enemy.h"
class Reaper : public Enemy
{
public:
Reaper(int playerXP) : Enemy(playerXP)
{
}
int attack(int, int);
};Reaper.cpp
int Reaper::attack(int pa, int php)
{
int eatk = 0;
if (pa == 0) {
eatk = php * .5;
}
else {
eatk = rand() % php * .25;
}
return eatk;
}错误:
抽象类类型的对象“收割机”是不允许的:纯虚拟函数“敌人:攻击”没有漫游者。
我的问题是。我为什么要犯这个错误?我试图理解为什么我要得到这个,以及任何可能的答案来解决它。
发布于 2018-04-27 00:31:50
编译器没有意识到您想要覆盖基类中的攻击函数。它将int attack()和int attack(int, int)看作是两个不同的函数,因为它们具有不同的类型签名。结果是您的Reaper类有两个函数,其中一个是纯虚拟函数。使用override关键字可以帮助避免这些错误,尽管它只在C++11和更新版本中可用。
https://stackoverflow.com/questions/50053589
复制相似问题