でコールバックとしてメンバ関数を指定します。 C++ 11は、(ClassBののコンストラクタで)であることをで行うための適切な方法になります。は、私は次のようしているC++ 11
ClassB::ClassB()
{
_obj.OnDoSomethingCool(
[&](const std::string& arg) -> bool
{
return Juggle(arg);
});
}
私が理解からは、コンパイラは、上記のラムダコードの外にはstd ::関数オブジェクトを作成します。コールバックが呼び出されると、std :: function :: operator()メンバーが呼び出され、ClassB :: Juggle()を直接呼び出す代わりにClassB :: Juggle()が呼び出されます。カバーの下で何が起こるのか間違っていない限り、すべてが少し非効率なようです。より良い方法がありますか?
ラムダで(この例のように)キャプチャしてもVisual Studio 2010ではうまく動作しないことに注意してください。 –