我试图创建一个将ostream
对象作为参数的函数,然后打印到它。我计划传递部分fstream
(文件)和cout
。
这是我的代码:
void printTask(int op1, int op2, int len, char operation, std::ostream& os = std::cout)
{
os << endl << " " << setw(len) << op1 << endl;
os << operation << " " << setw(len) << op2 << endl;
os << "-------------" << endl;
os << " ";
for(int i = 0; i < len; i++)
{
os << "?";
}
os << endl;
}
来自main()
,就像这样......
ofstream output("output.txt", ios::out);
cout << addition(xyz, output) << endl;
并且该功能如下所示:
int addition(int xyz, ofstream file)
{
int op1 = ...;
int op2 = ...;
char choice = ...;
printTask(op1, op2, xyz, choice, file);
printTask(op1, op2, xyz, choice, cout); //this cout is not necessary, default parameter
}
我收到关于std::ios::base
是私有的错误,但我确实通过引用传递了我的ostream
对象,因此它不会尝试使用复制构造函数。
有什么想法吗?
编辑:想要用答案更新这个。 addition
的原型错误,ofstream
应该通过引用传递,而不是复制它。
这有效:
int addition(int xyz, ofstream& file) {...}
非常感谢@ Jarod42