仅在 Eclipse 中不识别在一个位置的 ofstream 声明

not recognizing declaration of ofstream in one location only in eclipse

本文关键字:一个 位置 声明 ofstream Eclipse 识别 仅在      更新时间:2023-10-16

我有一个大型程序,它正在工作,而不是一个.h文件,当我尝试声明私有流时,它给了我"无效使用未定义类型"的错误。 在 eclipse 中,我还收到有关"声明结构 std::ofstream"的错误,带有外部 ocation/user/include/c++/4.1.2/iosfwd(我检查了,这是定义 ofstream 的行/位置)。 我已经包括了iostreams和fstreams。

如果我尝试使用

ifstream或fstream来标记声明,我将得到相同的错误,只是现在我尝试使用的任何对象类型的声明都会出错。

为了使事情更加烦人,我在程序的其他地方使用了fstream和ifstreams。 有一次我很生气,以至于我使用 ifstream 将有效 .h 文件的全部内容复制到 .h 文件中,这给了我一个错误......我得到了同样的错误。 我不知道为什么一个文件中有效的代码在另一个文件中无效,而唯一的更改是文件名和if_def宏。 这两个 .h 文件位于同一目录中。

很抱歉,我无法发布要审查的代码。 它是在另一台计算机上编写的,无法将代码从计算机 A 传输到 B(并且无法访问互联网)。 但是,如果您能提供建议,说明为什么我会在不查看代码的情况下收到此错误以供我测试,我将不胜感激。

编辑:在玩了更多之后,我了解到如果我删除.H文件从它的CPP文件错误消失。 所以如果文件被命名为 VectorOutput.h。 如果我从 VectorOutput 中删除 #include.cpp,即使我将其包含在其他文件中,eclipse 也不会抱怨。 如果我更改 VectorOutput 的名称.cpp错误也会以任何方式消失。 这是...啪。 我不知道这可能意味着什么,据我所知,文件的名称和具体位置应该没有任何意义。 通过重命名文件,我暂时摆脱了这个问题,但如果有人有猜测,我真的不知道他的根本原因。

你提供的很少。 我会检查你的命名空间。 检查是否使用前缀 std:: 正确声明类型。

编辑:实际上,如果您在标头中使用 ofstream(并且您是因为它声明为成员),则必须包含 fstream 标头。 iosfwd 仅适用于前向声明类型。