要通过std::invoke
调用成员函数指针,可以使用std::mem_fn
将成员函数指针转换为可调用对象。例如:
#include <functional>
#include <iostream>
struct Foo {
int data = 10;
void memberFunction(int value) {
std::cout << "data: " << data << ", value: " << value << std::endl;
}
};
int main() {
Foo foo;
auto memFn = std::mem_fn(&Foo::memberFunction);
std::invoke(memFn, foo, 20);
return 0;
}
在上面的示例中,我们定义了一个结构体Foo
,其中包含一个成员函数memberFunction
和一个成员变量data
。然后使用std::mem_fn
将Foo::memberFunction
转换为可调用对象memFn
,最后使用std::invoke
调用成员函数指针并传递实例对象foo
和参数20
。