要通過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
。