ロギングに使用するストリームを保持する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