5

私はこのように使用されることを意図したクラスを使用しています:

Output() << "Hello.\n";

そのoperator<<中で明示的に使用std::coutしていますが、「std::cout」に解決される静的クラスメンバーが必要なので、次のようなことができます。

copy(some_string_set.begin(), some_string_set.end(), ostream_iterator<string>(Output::m_stream, ", "));

または同様のもの(静的データメンバーを修正するまで、最終的な行を修正できません。

私も試してみautoましたが、GCCは

エラー: 'std::cout' は定数式には使用できません

私に。どうすればやりたいことができますか?(ポイントはstd::cout、私のコード全体を使用する必要はありませんが、すべての出力が Output クラスを通過するようにすることです)

4

3 に答える 3

10
struct Output
{
    static ostream& stream;
};

ostream& Output::stream = cout;

int main()
{
    Output::stream << "hey";
}

ここでうまく動作します。

于 2011-02-22T17:53:48.490 に答える
10

として保管してstd::ostream*ください。

参照をメンバーとして保存する場合があります。これは、参照を再割り当てできないため、エラーが発生しやすく、代入演算子が間違った動作をする原因になります。

于 2011-02-22T17:56:01.393 に答える
5

を保存する必要がありstd::ostream &ます。

于 2011-02-22T17:52:46.787 に答える