、私はエラーを取得しています:なぜ演算子<<はうまくいきませんか?以下のコードをコンパイルしている間
Expression.h
class Expression{
...
protected:
std::ostream Os;
};
Expression.c
Expression::Expression() : Os(std::cout)
{
...
}
Expression::Expression(std::ofstream &os) : Os(os)
{
...
}
Expression::Dump()
{
Os << "=============================================================" << std::endl;
Os << "Os: " << Os << std::endl;
}
error: no match for 'operator<<' (operand types are 'std::basic_ostream<char>' and 'std::ostream {aka std::basic_ostream<char>}')
私のミスですか?それを修正するために私は何をすべきですか?
このようなパラメータに初期値を与えながら、Os(std::cout)
とはどういう意味ですか?
[最小、***完全な***、および検証可能な例](http://stackoverflow.com/help/mcve)を作成して表示してください。また、[良い質問をする方法について読む](http://stackoverflow.com/help/how-to-ask)をご覧ください。 –
'ostream'をストリームアウトしようとするとどうなりますか?特に 'ostream'を自分自身に流していますか? – BoBTFish
'operator <<'は[documented](http://en.cppreference.com/w/cpp/io/basic_ostream/operator_ltlt2)として機能します。あなたがドキュメントを読んでいないようだし、エラーメッセージについて十分気にしていないようです。 –