所以我有:
在我的.h:
friend std::ofstream & operator <<(std::ofstream & output, myClass & s);
在我的.cpp
std::ofstream & operator <<(std::ofstream & output, myClass & s)
{
ofstream ofile << ("output.txt");
output << "Test" << endl;
return output;
}
我收到错误:
'<<'令牌之前的预期初始化程序
在`std :: ofstream&operator <<(std :: ofstream&output,myClass&s)
和
'operator <<'不匹配(操作数类型是'std :: ofstream '和'const char [5]')
在 ofstream ofile << ("output.txt");
这个问题是什么?`
`
2 回答
将函数限制为
std::ofstream
通常是一个坏主意,因为它可能适用于任何类型的std::ostream
. 将非const
引用传递给打印函数时,它看起来也非常可疑 . 这意味着您正式允许打印具有修改打印对象的副作用!出于这些原因,你应该改变这个:
对此:
你不要这样做,除非你确切知道你在做什么,否则请避免
endl
:您现在可以将
std::ofstream
对象传递给该函数并写入该文件 . 您只需要创建对象,将文件名传递给它的构造函数:您可能想要执行类似以下操作:
这是调用std :: ofstream的构造函数以及后续写入指定的流,后者又写入文件 .