2016-04-03 124 views
-6
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()); 

所以我宣布指针“演员”,我希望它成为一个指向一类,但显然这是行不通的。

我得到这个错误

请求成员调用“GetClassName”的“演员”,这是无级式“无效*”的

+0

有一个'无效*没有方法'。 –

+0

恕我直言 - 当程序员使用无效指针时,他们通常会做错事 –

+0

查找抽象类 –

回答

-1

战士和法师有父类人。

你想做的事:

person *actor; 
+0

1)从给出的例子中,你无法知道'Warrior' /'Mage'类是否有父类(或者甚至是如何定义这些类)。 2)例子(有解释)需要更深入。 –

+0

我已经试过,但方法不在父类 – Mihai

+0

职业法师:公民英雄(同样是战士) – Mihai