【问题标题】:C++ header include conflictC++ 头文件包含冲突
【发布时间】:2011-07-08 17:44:36
【问题描述】:

我正在为学校设计一个交通模拟程序。我的 Simulation 类从 XML 文件中读取车辆列表,因此我在 Simulation 类中包含了 Vehicle.h。我希望我的车辆能够保存指向模拟对象的指针,以便它可以使用模拟的searchRoads 函数。所以我将Simulation.h 包含在我的Vehicle 类中。

当我这样做时,我在尝试编译时遇到了 100 多个错误。我对我的 C++ 非常怀疑,所以如果我犯了某种重大罪行,请告诉我如何纠正这个问题。

【问题讨论】:

  • 1) 包括警卫。 2)发布您的代码。 3) 不是全部你的代码,当然,只是一个说明问题的例子。

标签: c++ header include


【解决方案1】:

或者,您缺少包含保护,导致多个头文件包含

或者

您正在创建 Circular Dependency 的标头。您应该使用 Forward Declaration

发布您的代码的详细信息以获得更详细的答案。

【讨论】:

  • 我做了一个循环依赖。我以为是这样的,只是不知道叫什么。我不知道修复起来这么简单。也感谢您的链接!代码正在运行! :D
  • @X_X:很高兴我能帮忙,请从这里发布您的问题的简约代码示例以获得快速答案,哦,如果有帮助,请接受答案:)
  • 会的,现在我需要检查我所有的文件并摆脱这些愚蠢的错误。
【解决方案2】:

你学到了一些关于包含守卫的东西:http://en.wikipedia.org/wiki/Include_guard 希望这会有所帮助。

【讨论】:

  • 很好,这通常是 start 的最佳实践!很高兴看到 Als 的回答有所帮助。我的更像是在黑暗中拍摄
【解决方案3】:

由于操作系统能够处理长文件名,因此我开始命名我的包含文件,以便它们反映代码在命名空间中的位置:

namespace network {
 class connection { bool send( char* stuff ); }
}

最终会出现在文件“network.connection.h”中。

它有助于使事情井井有条并减少文件名称冲突的机会。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多