标题似乎有些混乱,但是我会尽力解释。
我有一堂课CGameMode
:
#pragma once
#include <string>
#include <iostream>
#include "../Hero/Hero.h"
#include "../Weapon/Weapon.h"
#include "../Armor/Armor.h"
class CGameMode
{
private:
CHero Hero;
CWeapon Weapon;
CArmor Armor;
std::string FileName = "save.txt";
protected:
public:
void InitializeGame();
void CreateGame();
void LoadGame();
void SaveGame();
CGameMode* GetGameMode() { return this; }
};
如您所见,该类包含以下类的对象:CHero
,CWeapon
和CArmor
。让我们看一下其中一个类:
#pragma once
#include "../Enemy/Enemy.h"
#include "../GameMode/GameMode.h"
class CHero : public CEnemy
{
private:
int Energy = 0;
int ExperiencePoints = 0;
int Level = 0;
friend class CGameMode;
protected:
public:
CHero();
CHero(std::string Name, int Health, int Energy, int ExperiencePoints, int Level);
};
最重要的是这一行代码:
friend class CGameMode;
(CArmor
和CWeapon
也是CGameMode
类的朋友)。
问题是程序无法编译。但是,如果我从CGameMode
类中删除 Hero ,武器和 Armor 成员,则程序将编译,并且一切正常。>
所以问题是:如何使CGameMode
类与CWeapon
,CArmor
和CHero
成为朋友,同时,这些类的对象可以被CGameMode
包含?