多个包含在多个文件中
我正在做一个小游戏。
在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函数。我得到了错误并坚持到这个piont。
没有找到相关结果
已邀请:
5 个回复
芯伶句餐绕
嫩昧竞莫
放在文件的末尾而不是你的包含的末尾,或者在顶部使用
,尽管它不那么便携。 编辑: 进一步解释
&
的作用是告诉编译器完全包含或排除编译。
您想要这样做的原因是因为包含头文件基本上是说“将所有代码放在此文件中”,如果您多次执行此操作,那么您将在重新定义对象时出现命名冲突并在最佳方案中减慢编译时间。
茬贺努充尽
碧肮械淌设
黎喊病