2011-11-04 97 views
0

我想将我的类头包含在main和我的类实现中。奇怪的是main找到了完美的头文件,但是通过类实现,我得到了“没有这样的文件或目录”。为什么这会发生?我的意思是我的项目中的一个文件能够完美地找到一个头文件,但同一个项目中的另一个文件找不到相同的头文件可能有什么原因。在C++中包含文件

我使用的代码块10.05

感谢

+2

你在做'#include“blah.h”'或'#include '吗?源文件是否在不同的目录中? –

+0

你可以粘贴一个(可能与项目敏感的东西审查)粗略的项目结构的想法?你使用的是什么构建系统,以及发送给编译器的选项(如-I)? –

+1

你不应该包含实现。包括标题,就是这样。实现文件仍然会被编译。 – Pubby

回答

0

确保您的目录配置正确的,只要实现包含在项目应正确编译。同样如Fred Larson所说,确保在文件周围放置“引号”,而不是括号括起来,否则会在标准目录中查找找不到文件的标准目录。

+0

我决定放弃Codeblocks并将其移到Xcode上,并在其中找到头文件。谢谢你的回答! – user1017485

1

在编译类实现时,编译器为标题搜索的路径列表必须不同。

类实现和主文件在同一个目录下吗?如果没有,那么问题可能是,在大多数编译器中,搜索到的第一个路径是包含正在编译的文件的目录*,并且头文件与主文件位于同一个文件中,但不是类实现文件。

我不知道你的编译器是否提供了它,但有些模式有一个详细模式,它将列出搜索标题的路径。如果我上面的评论没有帮助,那么也许会。

  • 假设您使用引号包含文件。在你的包含中使用引号和尖括号的唯一区别在于,使用引号表示在包含所有已列出的其他路径之前搜索包含.cpp文件的目录(在命令行上,在环境变量中,在牵连中系统包括路径)。