【发布时间】:2016-04-03 15:01:59
【问题描述】:
class Hero
{
public:
Hero();
virtual int useAbility(){}
virtual int basicAttack(){}
int getHitPoints();
int getManaPoints();
void setHitPoints(int x);
void setManaPoints(int x);
protected:
unsigned int hitPoints;
unsigned int manaPoints;
private:
friend void printHero();
};
class Mage : public Hero
{
public:
Mage();
int useAbility();
int basicAttack();
std::string getClassName();
protected:
private:
std::string className;
};
战士也一样
int input;
void *actor;
cin >> input;
if(input == 1) actor = new Warrior;
if(input == 2) actor = new Mage;
printHero(actor.getClassName(),actor.getHitPoints(),actor.getManaPoints());
所以我声明了指针'actor',我希望它成为一个类的指针,但显然它不起作用。
我收到此错误
对'actor'中的成员'getClassName'的请求,它是非类类型'void*'
【问题讨论】:
-
void *上没有方法。 -
恕我直言 - 当程序员使用 void 指针时,他们通常会做错事
-
查找抽象类
-
你需要从同一个类(至少有1个虚函数)继承
Warrior和Mage,然后将actor类型改为指向该类的指针。 -
就是这样建的,我试过了,也不行