如何正确构建相互引用的类? (C ++)

时间:2014-02-20 17:31:14

标签: c++ class inheritance

我正在开发一个基于递归构造函数的过程游戏级别构建器。每个新的Door对象都会调用其后面的Room对象的构造函数,而该对象又为其墙调用新的Door构造函数,直到达到房间的极限。为了正确遍历,我需要我的房间知道什么是门和我的门有指向他们往返房间的指针,但编译器似乎不喜欢它。起初我把#includes菊花链接下来(>>意味着#include在这里):

randDungeon.cpp>> door.cpp>> door.h>> room.cpp>> room.h>> Library.cpp>> Library.h

但是当我尝试编译时出现错误,其中的信息实际上是room.cpp不知道Door对象是什么。如果我在上面的流程中倒转房间和门,我会得到相反的错误 - 我的房间知道他们的门是什么,但是门不再理解房间。

正确的课程组织是什么,以及非继承人门和房间可以互相交流?

1 个答案:

答案 0 :(得分:3)

所有#include都会将文件内容复制并粘贴到基本文件(randDungeon.cpp)中。这使你的.h文件大多无用,正如你所发现的那样,使得使用类很难

您需要做的是:

  • 停止#include * .cpp文件
  • #include所需文件中的相关声明(* .h)(.cpp和.h文件),或使用类的前向声明(首选)
  • 查找如何使用多个文件进行编译,因为您可能目前只是编译randDungeon.cpp