可能重复:
Why do I need to include both the iostream and fstream headers to open a file
我写了这段代码:
#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>
,则错误消失且代码编译。如果<fstream>
中包含std::ofstream
,我为什么要包含<iostream>
?
答案 0 :(得分:2)
你有一个错字:你的意思是ofstream
,但你的代码是ostream
。后者只是一个基类,不能直接实例化。 (并且您需要<fstream>
标题,而不是<iostream>
。)
答案 1 :(得分:1)
中定义
std::ofstream
在<iostream>
不。它可以声明,但它在fstream
中定义。
答案 2 :(得分:0)
因为定义在#include <fstream>
。您还应该看看:
Why do I need to include both the iostream and fstream headers to open a file了解详情。
答案 3 :(得分:0)
因此,C ++标准没有说明其他头文件中包含头文件。对于构造和使用std::ofstream
- 您应该包含fstream
标题。