要通过std::invoke
调用成员函数指针,可以使用std::mem_fn
将成员函数指针转换为可调用对象。例如:
#include#include struct Foo { int data = https://www.yisu.com/ask/10;"hljs">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
。