2016-05-22 2 views
-2

私はC++を使い慣れていないので、このエラーを理解することはできません。C++はクラス型のポインタを作成します

クラスPlayerのポインタ型を作成しようとしています。私が見たすべてのチュートリアルから、ヘッダファイルにタイプPlayerのポインタを宣言するための適切な構文でなければなりません。

Player* player = new Player; 

[EDIT、誤って完成前に掲示]しかし、私はエラーが、「このスコープで 『プレーヤー』を入力し参照するために「クラスのタグを使用しなければなりません」を取得。私は#include "Player.h"を使用しました。

ここでは何が起こっていますか?

EDIT は、これらのすべては、このポインタ(Player* player = new Player;)が定義されているヘッダファイルである

Player* player; 
    Player* player = new Player; 
    Player* player = new Player(); 

Player

#ifndef PLAYER_H 
#define PLAYER_H 

#include <vector> 
#include <string> 
#include <iostream> 

#include "Item.h" 
#include "GlobalDefs.h" 

class Player 
{ 

public: 

    // constructor 
    Player(void); 

    // destructor 
    virtual ~Player(void); 


    inline gold_t GetGold(void) 
    { 
     return gold; 
    } 

    void AddGold(gold_t amount); 
    void RemoveGold(gold_t amount); 
    std::string GetInventoryString(void); 
    void AddItem(Item); 

private: 
    gold_t gold; 
    Item item; 
    std::vector <Item> inventory; 

}; 

#endif /* PLAYER_H */ 

用このヘッダファイルを同じエラーを与えます。

#ifndef STOREAREA_H 
#define STOREAREA_H 

#include "AreaAbstract.h" 
#include "Player.h" 
#include <iostream> 

class StoreArea : public AreaAbstract{ 
    typedef void (StoreArea::*AreaInput)(void); 

public: 
    StoreArea(*Player); 
    StoreArea(); 

    ~StoreArea(); 

    void PrintAreaText(); 
    bool RecieveInput(std::string); 


protected: 
    void PurchaseHelm(); 
    std::map <std::string, AreaInput> areaInputMap; 

    Player* player; 


}; 

#endif /* STOREAREA_H */ 
+0

C++にはclassタグがありません –

+1

"ポインタを作る"ために必要なのは 'Player * player;'です。 – juanchopanza

+0

'Player'はどこに宣言されていますか?そのコードを私たちに見せてもらえますか? –

答えて

3

どこかPlayerという名前(クラス以外の)変数またはその他の識別子を持っているようですね、とエラーメッセージが使用することを示唆されています

Player* player = new class Player; 

を2つのPlayer sの間で明確にします。

最も単純な解決策は、非クラスPlayerの名前を別の名前に変更することです。 player

関連する問題