我有一個C++類,我想持有一個用於記錄的流。C++流作爲成員變量
在構建對象之後,應該能夠設置流(並可能重置)。
應該可以將流設置爲std::cout
,或者將文件流設置爲記錄到文件,或者作爲只會忽略數據(僅排序的/dev/null
)的字符串流。無論如何,它應該是一個ostream
類型的對象,對象的創建者可以隨時重置它。這個類本身對於具體的流類型是沒有意義的。
我可以用一個指針指向一個ostream做到這一點,但隨後的語法變得有點討厭,不必使用DEREF操作:
(*m_log) << "message";
而不是
m_log << "message";
但我做不到不使用引用,因爲在初始化對象之後,流對象可能需要重置。
是否有一個優雅的方式來實現這一點,即避免使用指針,但仍然能夠在施工後重置?
你爲什麼不提供一個小成員函數返回到您的流的參考?沿途的東西:ostream&mlog(){return * m_log;}。然後你會寫:mlog()<<「message」; – fjardon
使用一個指針,並用'std :: ostream&o = * m_log;'開始你的函數。 –
@fjardon:你爲什麼不提供這個小答案? ; P – Xeo