类没有命名C++代码中的类型错误

Class does not name a type error in C++ Code

本文关键字:类型 错误 代码 C++      更新时间:2023-10-16

我正在尝试用C++制作一个小游戏,在将我的Player类添加到我的game类时已经遇到了问题。我认为这是一个循环依赖问题,但向前声明类对解决这个问题没有帮助!!我到处都找了,就是想不通,所以希望能理解为什么这不起作用。我只包括标题,因为目前我在源代码中所拥有的只是我的构造函数定义";

Game.h

#ifndef GAME_H_INCLUDED
#define GAME_H_INCLUDED
#include "Player.h"
//only one instance of a game should be running
//make singleton class
class Game {
private:
bool playing;
Player * Player = 0;
static Game * inst;
Game() {}
public:
Player * GetPlayer() { return Player; } //Getting a "Player does not name a type" error here???
void AddPlayer(int health, int mana, int strength) { Player = new Player(health, mana, strength)}
bool StillPlaying() { return playing; }
void EndGame() { playing = false; }
static Game * GetInstance();
void StartGame();
};
#endif // GAME_H_INCLUDED

Player.h

#ifndef PLAYER_H_INCLUDED
#define PLAYER_H_INCLUDED
#include "Subject.h"
class Player : public Subject {
protected:
int health;
int mana;
int strength;
public:
Player(int health, int mana, int strength);
int GetHealth() { return health; };
int GetMana() { return mana; }
int GetStrength() { return strength; }
void TakeDamage(int enemyStrength) { health -= enemyStrength; }
void Attack();
void Heal();
void Event();
};
#endif // PLAYER_H_INCLUDED

这些错误显示在Game.h文件中,特别是它说"玩家"没有命名类型";在GetPlayer((函数上。我真的很困惑,因为当我声明Player成员变量时,并没有给我一个错误??

您有一个类Player和一个名为PlayerGame成员。一旦遇到成员声明,Game类中对Player的所有引用都将指向成员变量,而不是全局类型。

有一些方法可以解决这个问题(例如,::Player *GetPlayer(,但最好和最不令人困惑的解决方案是将成员变量或类型重命名为具有不同的名称。