私はブーストラムダを学んでいます(c++ 0Xラムダではないと思いますが、それらは異なると思います)。しかし、唯一の入力パラメーターが呼び出しオブジェクトである場合、オンラインでメンバー関数を呼び出す (そして結果を出力する) 方法を見つけることができません。つまり、この行は機能します:
for_each(vecCt.begin(), vecCt.end(), cout<<_1<<endl);
vecCt が のvector
場合int
。しかし、 vecCt が、文字列を返すために呼び出される関数を持つvector
of の場合はどうなるでしょうか? これも:MyClass
getName
for_each(vecCt.begin(), vecCt.end(), cout<<_1->getName());
これも:
for_each(vecCt.begin(), vecCt.end(), cout<<*_1.getName());
動作します。
私はオンラインで検索しましたが、多くの結果は、メンバー関数を呼び出すときに bind を使用することを提案しています。今、私はこれを知っています
for_each(vecCt.begin(), vecCt.end(), bind(&MyClass::getName, _1);
getName
int が渡された各オブジェクトを呼び出すことができますが、この出力を cout に渡すにはどうすればよいですか? これは機能しません:
for_each(vecCt.begin(), vecCt.end(), cout<<bind(&MyClass::.getName, _1);