包括.cpp文件中的头文件

时间:2012-02-08 01:31:50

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

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

3 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:1)

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

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

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

('circle'是指例如包括B的文件A,包括C再次包括A。)

答案 2 :(得分:0)

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