【问题标题】:including header files in .cpp files包括 .cpp 文件中的头文件
【发布时间】:2012-02-08 01:31:50
【问题描述】:

我有一个文件 SpreadSheetCell.h 和 SpreadSheetCell.cpp。
我有另一个包含 SpreadSheetCell.h 的文件 SpreadSheet.cpp。在这种情况下,它给了我诸如“未定义对 SpreadSheetCell:SpreadSheetCell() 的引用”之类的错误。
但是当我尝试包含 SpreadSheetCell.cpp 时,错误是走了。包含头文件而不是 cpp 文件不是很常见吗?我可能做错了什么?

【问题讨论】:

  • 或者你能做对什么,这都是观点,因为没有来源卢克。
  • 你做错的是在没有提供足够详细信息的情况下提出问题。

标签: c++ g++ header-files


【解决方案1】:

这是一个链接错误,意味着您在编译时没有包含具有SpreadSheetCell:SpreadSheetCell() 定义的源文件。

您可能在使用的命令行中缺少SpreadSheetCell.cpp,例如类似:

g++ -o myBinary SpreadSheet.cpp SpreadSheetCell.cpp [...more files?]

【讨论】:

  • Aww .. 是的,我在编译时忘记包含 SpreadSheetCell.cpp。谢谢
【解决方案2】:

包含源代码绝不是一个好主意。始终只包含头文件。

我无法查看您的文件,但是,我认为 SPreadSheetCell.h 包含一个文件(可能是 SpreadSheet.h?),因此存在循环依赖关系。

最好的方法是制作包含的文件的图表(在 cpp 和 h 文件中)。如果某处有一个“圆圈”,您就发现了问题。在这种情况下,您应该删除一个链接,这样圆圈就会被破坏或将文件拆分为更小的文件(也可以删除圆圈)。

(用“圆圈”表示例如文件 A 包括 B 包括 C 又包括 A。)

【讨论】:

    【解决方案3】:

    确保您的 SpreadSheetCell.cpp 有一个 #include "SpreadSheetCell.h",如果没有显示您的代码和编译命令!

    【讨论】:

      猜你喜欢
      • 2012-02-12
      • 2020-07-05
      • 1970-01-01
      • 2012-02-08
      • 1970-01-01
      • 2014-01-04
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      相关资源
      最近更新 更多