我正在做一个小游戏。

在BattleRecord.h中:

#ifndef _CHARACTER_H_
#define _CHARACTER_H_
#include "Character.h"
#endif

class BattleRecord
{
public:
    Character Attacker;
    Character Defender;
    Status status;
    int DamageDealt;
    int GoldEarned;
    int ExpGained;
};

在Character.h中:
#ifndef _EQUIPMENT_H_
#define _EQUIPMENT_H_
#include "Equipment.h"
#endif

class BattleRecord;
class Character
{
BattleRecord AttackEnemy(Character &Enemy);
}

在BattleRecord.h中:
#ifndef _CHARACTER_H_
#define _CHARACTEr_H_
#include "Character.h"
#endif

#ifndef _BATLE_RECORD_H_
#define _BATLE_RECORD_H_
#include "BattleRecord.h"
#endif

class GUI
{
public:
//GUI Methods, and two of these:
void ViewStats(Character &Player);
void Report(BattleRecord Record)
}

这里的问题是,我的Character.h和BattleRecord.h需要互相包含,这肯定会引起多重重定义问题。因此,我通过添加以下内容在Character.h中使用了前向声明:
class BattleRecord;

问题已解决。但是,然后GUI.h再次需要BattleRecord.h来报告战斗,因此我必须将BattleRecord.h包含到GUI.h中。我还必须包括Character.h才能传递到ViewStat函数中。我遇到了错误,并坚持到了这一点。

最佳答案

您使用的包含防护错误。它们应仅出现在您打算防止包含的文件中,并且应覆盖整个文件。 (不仅包括)。

例如,在BattleRecord.h中

#ifndef _BATTLE_H_
#define _BATTLE_H_
#include "Character.h"

class BattleRecord
{
public:
    Character Attacker;
    Character Defender;
    Status status;
    int DamageDealt;
    int GoldEarned;
     int ExpGained;
};

#endif // _BATTLE_H_

关于c++ - 多个文件中包含多个,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5106650/

10-11 23:07