2016-04-03 12 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

IMHO - プログラマがvoidポインターを使用しているときに通常間違っている –

+0

抽象クラスを検索 –

答えて

-1

戦士とメイジは、親クラスの人を持っています。

あなたは何をしたい: `ボイド*`には方法が

person *actor; 
+0

1)与えられた例から、 'Warrior' /' Mage'クラスが親クラス(あるいはそれらのクラスがどのように定義されているか)があるかどうかを知る方法はありません。 2)例題(説明付き)はもっと深く理解する必要があります。 –

+0

私はすでにそれを試みましたが、メソッドは親クラスにありません – Mihai

+0

クラスMage:public Hero(戦士のための同じもの) – Mihai

関連する問題