在单个类的 std::function 映射中存储成员函数指针
当尝试存储指向特定成员函数的函数指针时在 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 lambda。以下是这些方法的示例:
使用占位符:
using namespace std::placeholders; std::function<void(Foo*, int, int)> f = std::bind(&Foo::doSomethingArgs, this, _1, _2);
使用 Lambda (C 11):
std::function<void(Foo*, int, int)> f = [=](Foo* foo, int a, int b) { foo->doSomethingArgs(a, b); };
以上是如何在`std::function`映射中正确存储成员函数指针?的详细内容。更多信息请关注PHP中文网其他相关文章!