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

标签 c++ class inheritance

我正在开发一个基于递归构造函数的程序游戏关卡构建器。每个新的 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 文件几乎毫无用处,并且正如您所发现的那样,这使得类的使用变得困难

你需要做的是:

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

关于c++ - 如何正确构建相互引用的类? (C++),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21915290/

相关文章:

c++ - 为什么是 exit(0);给我一个 std :string. .. 错误?

c++ - CUDA:二维数组索引给出意想不到的结果

c++ - 如何使用没有名称的 C++ 类?

android - 简单的自定义类扩展 View

c++ - 为方阵创建构造函数的问题

java - toString() 方法中 super 关键字隐式转换为 super.toString() 未发生

python - 用元类继承类字典

c++ - 如何在 C++ 中逐行解析 .dat 文件

c++ - 使用指针 vector 实现移动构造函数

objective-c - NSNotification 在父类(super class)中观察并在父类(super class)和子类中处理