質問する
115 次
2 に答える
3
使用できます
static void Dump( std::ostream& os, Book& b, format_f f )
{
f(os); os << b;
}
( returnf(os) << b
以降では機能しませんf
。MMの回答を見ると、おそらくあなたが達成したかったものとはまったく異なります)std::ios_base
std::basic_ostream
于 2013-10-09T13:41:08.287 に答える
1
出力ストリームは<<
、このタイプの関数に対して演算子のオーバーロードを提供しているため、以下のシグネチャを持つ関数を受け入れます。
std::ios_base& function( std::ios_base& os )
しかし、あなたはstd::function
それとはかけ離れた a を渡しています。has 演算子のオブジェクトはstd::function
、関数のように使用できますが、実際には関数ではありません。したがって、そのストリームはそれらを受け入れることができません。()
代わりにテンプレートの方法を使用するstd::function
と、簡単に修正できます。
template <typename F>
static void Dump( std::ostream& os, Book& b, F f )
{
os << f << b;
}
于 2013-10-09T13:40:56.177 に答える