2013-03-18 322 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的地方使用它。