我的包含在名为“stats.h”的标题中
我有2个课程 A 和 B 。
A 要求标题为 B , A 标题为 B
当我尝试编译时,我得到大约50个错误,比如这个
identifier 'Player'
int assumed
; before * missing
有关如何解决这个问题的任何想法? :(
(此处为相关代码)
CLASS A - PLAYER
#include "stats.h"
class Player
{
public:
Player(int x, int y);
Texture *texture;
int x;
int y;
float rotation;
void Update(double elapsedTime);
void Draw(Sprite *sprite);
private:
Weapon *weapon;
};
CLASS B - WEAPON
#include "stats.h"
class Weapon // **CLASS B**
{
public:
double interval;
Weapon(Player *player);
void Update(double elapsedTime);
void Draw(Sprite *sprite);
protected:
private:
Player *player;
};
STATS.H
#include "Player.hpp"
#include "Weapon.hpp"
答案 0 :(得分:1)
您的标头中没有实现,因此您可以传递前向声明并仅在cpp文件中包含标头。
例如 - 在class Player
之前,提出class Weapon
的声明:
//vvvvvvvvvvv
class Weapon;
class Player
{
public:
Player(int x, int y);
/* .. */
};
并删除#include "stats.h"
。 class Weapon
答案 1 :(得分:0)
尽管正如其他人所建议的那样使用前向声明会起作用,但真正的问题在于设计。像这样的类之间的相互依赖几乎总是表明设计出了问题。在这种情况下,我真的想知道武器是否需要了解玩家。