に似た C++ クラスを作成しようとしています 。これは、入力を受け取り、コンストラクターで指定されたstd::ostream
2 つの に書き込みます。ここでは、適切なテンプレートstd::ostream
と一緒に:operator<<
struct SplitStream
{
SplitStream(std::ostream & a_, std::ostream & b_) : a(a_), b(b_) {}
std::ostream & a, & b;
};
template<class T>
const SplitStream & operator << (const SplitStream & sp, const T & x)
{
sp.a << x;
sp.b << x;
return sp;
}
そのコードの下の数行で、このクラスを使用しようとしています:
void foo(SplitStream & out)
{
double some_double = 1.23;
out << "bar" << some_double << std::endl;
}
そして、私はこのかなり謎めいたエラーを受け取ります:
... error C2678: binary '<<' : no operator found which takes a left-hand operand of type 'const SplitStream' (or there is no acceptable conversion) ...
私は何を間違っていますか?const なしで定義しようとしましoperator<<
たが、どちらもコンパイルされませんでした。