Я делаю небольшую игру.
В 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;
};
In 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. Я получил ошибку и застрял с этим до этого пионта.