将成员函数传递给函数指针的方法是使用静态成员函数或者使用lambda表达式。下面是两种常见的实现方式:
class MyClass {
public:
static void myFunction(int arg) {
// 静态成员函数的实现
}
};
int main() {
void (*funcPtr)(int) = &MyClass::myFunction; // 函数指针指向静态成员函数
// 使用函数指针调用静态成员函数
(*funcPtr)(42);
return 0;
}
class MyClass {
public:
void myFunction(int arg) {
// 成员函数的实现
}
};
int main() {
MyClass obj;
auto lambda = [&obj](int arg) { obj.myFunction(arg); }; // lambda表达式捕获对象并调用成员函数
void (*funcPtr)(int) = lambda.target<void(*)(int)>(); // 函数指针指向lambda表达式
// 使用函数指针调用成员函数
(*funcPtr)(42);
return 0;
}
以上是将成员函数传递给函数指针的两种常见方法。根据具体的需求和场景,选择适合的方法来实现。
领取专属 10元无门槛券
手把手带您无忧上云