【发布时间】:2016-11-13 18:09:05
【问题描述】:
我想将我的项目分成更小的部分,因为它开始变得不可读(超过 1000 行),而且我对需要使用其他文件中定义的定义的指定 .h 和 .cpp 有一些问题。
项目包含以下文件:
main.cpp RPG.h 和 .cpp Hero.h 和 .cpp Globaldefs.h 和 .cpp
#ifndef Hero_h
#define Hero_h
#include "Globaldefs.h"
#include "RPG.h"
#include <vector>
using namespace std;
extern class NPC;
extern class Inventory;
class Hero
{
protected:
(...)
Inventory inventory;
(...)
public:
vector<Mob*>::iterator TryAttack(vector <Mob*>& monsters, int & number);
vector<NPC*>::iterator TryTalk(vector <NPC*>& _NPCs, int & number);
};
(...)
#endif
上述声明来自 Hero.h 文件,编译器发现行 Inventory 库存中有错误; (该类在外部,在 RPG.h 中声明并在 RPG.cpp 中定义):'Hero::inventory' 使用未定义的类 'Inventory' RPG d:\programming\rpg\rpg\rpg\hero.h 23 我完全不知道'不明白为什么 Mob(RPG.h 和 .cpp 中的其他类)工作正常,而 NPC 也定义为 extern(RPG.h 中也是如此)。
#ifndef RPG_h
#define RPG_h
#include "Globaldefs.h"
#include "Hero.h"
#include <vector>
using namespace std;
class Mob;
class NPC;
class Fight;
class Item;
extern class Hero;
(...)
class Meat : public Item
{
(...)
public:
virtual void ActivateEffect(Hero* _hero) { _hero->AddHp(15); };
};
#endif
这是 RPG.h 文件,在那里,编译器说出现了问题
virtual void ActivateEffect(Hero* _hero) { _hero->AddHp(15); };
有:使用未定义类型 'Hero' RPG d:\programming\rpg\rpg\rpg\rpg.h 97 和左侧 '->AddHp' 必须指向类/结构/联合/通用类型 RPG d :\programming\rpg\rpg\rpg\rpg.h 97
我研究了很多网站,但在任何地方人们都遇到了简单地将文件添加到 main.cpp 的问题,而不是在文件之间建立内部连接。
【问题讨论】:
-
main.cpp RPG.h 和 .cpp Hero.h 和 .cpp Globaldefs.h 和 .cpp 显然不是代码的一部分:D fckin 编辑器不允许我发布问题而不将其标记为代码