我已经
了 using std::fstream;
并尝试创建 ofstream 类的对象,它说
错误:'ofstream'未在此范围内声明
但是当使用std :: ofstream 专门时,它可以正常工作。我的问题是为什么使用 std :: fstream 是不够的,因为 ofstream / ifstream 是这个库的类?
亲爱的尊敬的downvoters,请在downvoting之前提供一个理由,以便我可以改进。谢谢!
答案 0 :(得分:3)
您正在混合使用#include
和using
。 #include
在源文件中包含(令人惊讶的不是?)声明,使它们可用。 #include <fstream>
实际上声明了std::fstream
和std::ofstream
。
using
从当前名称空间中的其他名称空间导入声明,以允许使用不合格的名称。这里std::ofstream
是限定名称(包括命名空间),不合格的名称是...... ofstream
因此,如果您想使用非限定名称ofstream
,请在代码中添加using std::ofstream;
。
但要注意,名称空间被添加到C ++中以允许正确分离声明并避免名称冲突。在主命名空间中过度使用using
指令(对using namespace std;
不赞成)导致命名空间污染并且会导致冲突......
或者,您可以省略using
指令并在代码中始终使用std::ofstream
。