C++生成类类型的指针

C++ Making Pointer of Class type

本文关键字:指针 类型 C++      更新时间:2023-10-16

我是C++的新手,无法解决这个错误。

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

Player* player = new Player;

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

但我得到了错误"必须使用'class'标记来引用此范围中的类型'Player'"。我用过#include "Player.h"

这是怎么回事?

编辑所有这些都给出了相同的错误

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

听起来您在某个地方有一个名为Player的变量或其他标识符(而不是类),错误消息建议使用:

Player* player = new class Player;

以消除两个Players之间的歧义。

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

相关文章: