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

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

我正在尝试用 C++ 制作一个小游戏,但在将我的玩家 class 添加到我的游戏 class 中时,我已经 运行 遇到了问题。我认为这是一个循环依赖问题,但是转发声明 class 并没有帮助解决这个问题!我到处都看过了,就是想不通,所以希望能对为什么这行不通有一些了解。我只包括 headers 因为我目前在源代码中只有我的构造函数定义

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 成员变量时给我一个错误??

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

有很多方法可以解决这个问题(例如,::Player *GetPlayer),但最好且最不容易混淆的解决方法是重命名成员变量或类型,使其具有不同的名称。