可能重复:
为什么我需要同时包含iostream和fstream头才能打开文件
我写了这个代码:
#include <iostream>
int main()
{
std::ofstream file_out("file.txt");
file_out.close();
return 0;
}
std::ofstream
是在<iostream>
中定义的,但编译此代码时我得到以下错误:
error: variable 'std::ofstream file_out' has initializer but incomplete type
我发现,如果我还包括<fstream>
,错误就会消失,代码就会编译。如果<iostream>
中包含std::ofstream
,为什么要包含<fstream>
?
您有一个拼写错误:您的意思是有一个ofstream
,但您的代码显示ostream
。后者只是一个基类,不能直接实例化。(您需要<fstream>
标头,而不是<iostream>
。)
<iostream>
中定义了std::ofstream
没有。它可以在那里被声明,但它是在fstream
中定义的。
因为定义在#include <fstream>
中。你还应该看看:
为什么我需要同时包含iostream和fstream头来打开文件以获取更多详细信息。
因此,C++标准没有说明在其他头文件中包含头文件。对于构造和使用std::ofstream
,应该包含fstream
标头。