2016-05-22 14 views
-2

Ich bin neu in C++ und kann diesen Fehler nicht herausfinden.C++ Making Pointer der Klasse

Ich versuche, einen Zeigertyp für die Klasse Player zu machen. Von allen Tutorials, die ich gesehen habe, sollte dies die richtige Syntax sein, um einen Zeiger vom Typ Player in einer Header-Datei zu deklarieren.

Player* player = new Player; 

[EDIT, versehentlich vor fertig geschrieben]

Aber ich bekomme die Fehlermeldung „muss‚Klasse‘Tag verwendet, bezieht‚Spieler‘in diesem Bereich geben“. Ich habe #include "Player.h" verwendet.

Was geht hier vor?

EDIT Alle diese geben dem gleichen Fehler

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

Diese Header-Datei für 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 */ 

Dies ist der Header-Datei, in der sich der Zeiger (Player* player = new Player;) definiert wird.

#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++ hat keine 'Klassenmarkierung (en)' –

+1

Um "einen Zeiger zu machen" brauchen Sie nur 'Player * player;'. – juanchopanza

+0

Wo wird 'Player' deklariert? Kannst du uns diesen Code zeigen? –

Antwort

3

Es klingt wie Sie eine Variable oder eine andere Kennung (außer der Klasse) haben Player irgendwo genannt, und die Fehlermeldung darauf hindeutet, zu verwenden:

Player* player = new class Player; 

zwischen den beiden Player s eindeutig zu machen .

Die einfachste Lösung wäre die Umbenennung der Nicht-Klasse Player in etwas anderes, z. player.