は、誰もが<<
でそれに渡されたパラメータのいずれかの仕事をして回避ヌルstd::ostringstream
を持つ方法を提案することはできますか?:: ostringstream :: ostringstream参照
ここでは二つの関連記事Implementing a no-op std::ostreamとPrinting to nowhere with ostreamは、これまで最も有望な解決策はhttps://stackoverflow.com/a/760353/826203ですが、テストしながら、それは
int main() {
onullstream os;
os << 666;
// std::ostringstream & oss = os; // error C2440: 'initializing' : cannot convert from 'onullstream' to 'std::ostringstream &'
oss << "hello, world";
}
しかし、これが唯一のos<<666
のように使用することができますが、ないすることは可能性がありますが、 std::ostringstream &
として使用されます。ここに出る?
あなたがエラーを取得する:あなたの既存のインタフェースを既に
std::ostringstream
を取る場合は、std::ostringstream
から派生し、適切なストリームバッファを設定することにより、AAヌル・ストリームを作成することができます継承ツリー。両方とも 'std :: ostream'から継承しますが、それ以外は無関係です。代わりに、私は 'std :: ostringstream'をここで使う必要はないと思います。あなたが本当に必要としないものです。たとえば、ストリームで呼び出す関数があれば、 'std :: ostream'リファレンスを取ります。次に、 'std :: ostringstream'オブジェクト*または' onullstream'オブジェクトを渡すことができます。 –