我是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 */
答案 0 :(得分:3)
听起来你在某处有一个名为Player
的变量或其他标识符(除了类),并且建议使用错误消息:
Player* player = new class Player;
消除两个Player
之间的歧义。
最简单的解决方案是将非类Player
重命名为其他内容,例如: player
。