単一クラスの std::function マップにメンバー関数ポインターを格納する
特定のクラスのメンバー関数への関数ポインターを格納しようとするときstd::function マップ内のクラスを使用する場合、非静的メンバー関数をメソッドで呼び出すための要件を理解することが重要です。 object.
提供されたコードでは、エラーは std::function
修正されたコード スニペットは次のようになります:
#include <functional> class Foo { public: void doSomething() {} void bindFunction() { // Correct std::function<void(Foo*)> f = &Foo::doSomething; } };
関数をパラメーターとさらにバインドするには、C プレースホルダーまたは C 11 ラムダを利用できます。これらのアプローチの例を次に示します。
プレースホルダーの使用:
using namespace std::placeholders; std::function<void(Foo*, int, int)> f = std::bind(&Foo::doSomethingArgs, this, _1, _2);
ラムダ (C 11) の使用:
std::function<void(Foo*, int, int)> f = [=](Foo* foo, int a, int b) { foo->doSomethingArgs(a, b); };
以上がメンバー関数ポインターを「std::function」マップに正しく格納するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。