C ++,#include问题!

时间:2011-05-05 07:52:49

标签: c++

我的包含在名为“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"

2 个答案:

答案 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)

尽管正如其他人所建议的那样使用前向声明会起作用,但真正的问题在于设计。像这样的类之间的相互依赖几乎总是表明设计出了问题。在这种情况下,我真的想知道武器是否需要了解玩家。