请问一个关于抽象类的有关问题
请教一个关于抽象类的问题
我想做一个简易的RPG小游戏,有要求需要用到抽象类,需要有攻击、防御、致命一击这样的功能,所以我将抽象类定义成如下:
接下来要继承该类,我想写成下面这样的:
但是这样编译器会报错,提示Player是抽象类。难道必须要在函数写一个int attack()这样的,然后再写个重载的函数int attack(Player)这样子吗?能不能在参数列表里面加一个可以强制转换成任何类的那样?就类似Java中的Object类?
C++两年前学的,当时通看了C++ Primer,现在都忘了……所以如果大家觉得这个问题小儿科,大家不要吐槽……
------解决方案--------------------
不吐槽啊 问题很好!
个人认为你在base class里面应该这样写
我想做一个简易的RPG小游戏,有要求需要用到抽象类,需要有攻击、防御、致命一击这样的功能,所以我将抽象类定义成如下:
class Role
{
public:
virtual int attack() = 0;
virtual int defend() = 0;
virtual int hit() = 0;
}
接下来要继承该类,我想写成下面这样的:
class Player : public Role
{
public:
Player();
Player(string name, char hp, char att, char def, char lv) : strName(name), chHP(hp), chAttack(att), chDefence(def), chLevel(lv) {}
int attack(Player);
int defend(Player);
int hit(Player);
int getHP();
int setModifyHP(int);
private:
string strName;
char chHP;
char chAttack;
char chDefence;
char chLevel;
};
但是这样编译器会报错,提示Player是抽象类。难道必须要在函数写一个int attack()这样的,然后再写个重载的函数int attack(Player)这样子吗?能不能在参数列表里面加一个可以强制转换成任何类的那样?就类似Java中的Object类?
C++两年前学的,当时通看了C++ Primer,现在都忘了……所以如果大家觉得这个问题小儿科,大家不要吐槽……
------解决方案--------------------
不吐槽啊 问题很好!
个人认为你在base class里面应该这样写
class Role
{
public:
virtual int attack(Role&) = 0;
virtual int defend(Role&) = 0;
virtual int hit(Role&) = 0;
}