C ++制作类类型的指针

时间:2016-05-22 21:57:50

标签: c++ pointers

我是C ++的新手,无法弄清楚这个错误。

我试图为类Player创建指针类型。从我所见过的所有教程中,这应该是在头文件中声明类型为Player的指针的正确语法。

Player* player = new Player;

[编辑,在完成之前意外发布]

但是我得到了错误"必须使用' class'标记以引用类型'播放器'在这个范围内"。我使用了#include "Player.h"

这里发生了什么?

EDIT 所有这些都给出了同样的错误

    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 */

这是正在定义指针(Player* player = new Player;)的头文件。

#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 */

1 个答案:

答案 0 :(得分:3)

听起来你在某处有一个名为Player的变量或其他标识符(除了类),并且建议使用错误消息:

Player* player = new class Player;

消除两个Player之间的歧义。

最简单的解决方案是将非类Player重命名为其他内容,例如: player