我的代码有一个ostream
对象,由各种模块累积并最终显示到控制台。我也想将这个ostream
对象写入文件,但我是否必须使用ofstream
对象重写所有代码,或者是否有办法将其转换为另一个(也许通过stringstream
?)
例如,我现有的许多功能都是
ostream& ClassObject::output(ostream& os) const
{
os << "Details";
return os;
}
我可以使用ofstream
对象作为参数调用此函数,并让ofstream
对象累积信息吗?
答案 0 :(得分:10)
是的,你可以。这就是名为subtype polymorphism的OO概念中的重点。由于ofstream
派生自ostream
,因此ofstream
的每个实例同时也是ostream
的实例(概念上)。因此,您可以在任何需要ostream
的实例的地方使用它。
答案 1 :(得分:0)
ofstream from ostream so
只需在 main.cpp
中添加一些代码#include "ClassObject"
#include <fstream>
#include <iostream>
using namespace std;
int main()
{
ClassObject ob;
cout << ob; // print info to console window
// save info to .txt file
ofstream fileout;
fileout.open("filename.txt", ios::app);
fileout << ob;
fileout.close();
return 0;
}