2013-03-18 105 views
4

我的代码有一个ostream对象,它由各个模块累积并最终显示给控制台。我还想将这个ostream对象写到一个文件中,但是我必须使用ofstream对象重写所有代码,还是有办法将一个对象转换为另一个(可能通过stringstream?)C++ ostream和ofstream转换

例如,很多现有的功能,看起来像

ostream& ClassObject::output(ostream& os) const 
{ 
    os << "Details"; 
    return os; 
} 

我可以调用这个函数与ofstream对象作为参数,并有ofstream对象积累信息呢?

+4

*“我可以使用流媒体对象调用此函数吗?”*是的。 'ofstream'从'ostream'继承,所以你可以直接将'ofstream'传递给那个函数。 – 2013-03-18 20:53:29

回答

8

是的,你可以。这就是OO概念subtype polymorphism中的一点。由于ofstream派生自ostream,所以ofstream的每个实例同时也是ostream的实例(在概念上)。所以你可以在任何需要ostream的地方使用它。