我有一个大型程序正在运行,而不是一个 .h 文件,当我尝试声明私有 ofstream 时,它给了我“无效使用未定义类型”的错误。在 Eclipse 中,我还收到关于“声明 struct std::ofstream”的错误,带有外部位置 /user/include/c++/4.1.2/iosfwd(我检查了一下,这是定义 ofstream 的行/位置)。我已经包含了 iostreams 和 fstreams。
如果我尝试将声明更改为使用 ifstream 或 fstream 我会得到相同的错误,只是现在我尝试使用的任何对象类型的声明都会出错。
为了让事情变得更烦人,我在程序的其他地方使用了 fstream 和 ifstreams。有一次,我非常生气,以至于我使用 ifstream 将有效 .h 文件的全部内容复制到 .h 文件中,这给了我一个错误……我得到了同样的错误。当唯一的变化是文件名和 if_def 宏时,我不知道为什么一个文件中有效的代码在另一个文件中无效。这两个 .h 文件位于同一目录中。
很抱歉,我无法发布要审核的代码。它是在另一台计算机上编写的,无法将代码从计算机 A 传输到 B(也无法访问互联网)。但是,如果您能提供一个建议,说明为什么我会在不查看代码的情况下测试此错误,我将不胜感激。
编辑:在玩了一些之后,我知道如果我从它的 CPP 文件中删除 .H 文件,错误就会消失。所以如果文件名为 VectorOutput.h。如果我从 VectorOutput.cpp 中删除#include,即使我将它包含在其他文件中,eclipse 也不会抱怨。如果我以任何方式更改 VectorOutput.cpp 的名称,错误也会消失。这是……奇怪的。我不知道这可能意味着什么,据我所知,文件的名称和具体位置应该没有任何意义。通过重命名文件,我暂时摆脱了这个问题,但如果有人猜到的话,我真的很想知道他的根本原因。