小さなゲームを作っています。
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 に含める必要があります。ViewStat 関数に渡すために Character.h も含める必要があります。エラーが発生し、このピオントまでこれに固執しました。