我正在开发一个基于递归构造函数的程序游戏关卡构建器。每个新的 Door 对象都会调用它之外的 Room 对象的构造函数,而 Room 对象又会为其墙壁调用新的 Door 构造函数,直到达到房间的限制。为了正确遍历,我需要我的房间知道门是什么,我的门需要指向它们去往/来自的房间的指针,但编译器似乎不喜欢它。起初,我将我的#includes 菊花链接起来(>> 在这里表示#include):
randDungeon.cpp >> door.cpp >> door.h >> room.cpp >> room.h >> Library.cpp >> Library.h
但是我在尝试编译时收到错误消息,基本上,room.cpp 不知道 Door 对象是什么。如果我在上面的流程中颠倒房间和门,我会得到相反的错误 - 我的房间知道它们的门是什么,但门不再理解房间。
什么是正确的类组织方式,使得非继承类 Door 和 Room 可以相互通信?
最佳答案
#include
所做的只是将文件内容复制并粘贴到基本文件 (randDungeon.cpp) 中。这使您的 .h 文件几乎毫无用处,并且正如您所发现的那样,这使得类的使用变得困难
你需要做的是:
- 停止
#include
ing *.cpp 文件 #include
所需文件(.cpp 和 .h 文件)中的相关声明(*.h),或使用类的前向声明(首选)- 查看如何使用多个文件进行编译,因为您目前可能只是在编译 randDungeon.cpp
关于c++ - 如何正确构建相互引用的类? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21915290/