C++ 在.cpp文件中包括头文件

C++ 在.cpp文件中包括头文件,c++,g++,header-files,C++,G++,Header Files,我有一个文件SpreadSheetCell.h和SpreadSheetCell.cpp。 我有另一个文件SpreadSheet.cpp,其中包括SpreadSheetCell.h。在这种情况下,它会给我诸如“未定义对SpreadSheetCell的引用:SpreadSheetCell()”等错误。但当我尝试包含SpreadSheetCell.cpp时,错误就消失了。包含头文件而不是cpp文件不是很常见吗?我可能做错了什么?包含源代码从来都不是一个好主意。始终仅包括头文件 我无法查看您的文件,但是

我有一个文件SpreadSheetCell.h和SpreadSheetCell.cpp。

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

包含源代码从来都不是一个好主意。始终仅包括头文件

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

最好的方法是绘制包含的文件的图形(在cpp和h文件中)。如果在某个地方有一个“圆圈”,你就已经发现了问题。在这种情况下,您应该删除一个链接,这样圆就会断开,或者将文件拆分为较小的文件(也可以删除圆)


(对于“圆圈”,我的意思是,一个文件a包括B包括C再包括a。)

包含源代码从来都不是一个好主意。始终仅包括头文件

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

最好的方法是绘制包含的文件的图形(在cpp和h文件中)。如果在某个地方有一个“圆圈”,你就已经发现了问题。在这种情况下,您应该删除一个链接,这样圆就会断开,或者将文件拆分为较小的文件(也可以删除圆)


(我的“圆圈”是指文件a包括B包括C再包括a。)

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

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

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

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

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

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

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

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

或者你做对了什么,都是观点,因为没有来源卢克。你做错了什么,是问了一个问题却没有给出足够的细节。或者你做对了什么,都是观点,因为没有来源卢克。你做错了什么,是问了一个问题却没有给出足够的细节。啊。。是的,我在编译时忘了包括SpreadSheetCell.cpp。谢谢。。是的,我在编译时忘了包括SpreadSheetCell.cpp。谢谢