步骤
- 定义类:包含成员变量和需要作为回调函数的成员函数。
- 将成员函数指针转换为合适的函数指针类型:由于成员函数有一个隐含的
this
指针,普通函数指针无法直接指向成员函数,需要使用 std::function
或者 std::mem_fn
等工具来处理。
- 注册回调函数:将转换后的函数指针传递给需要设置回调的地方。
示例代码
#include <iostream>
#include <functional>
class MyClass {
public:
MyClass(int value) : data(value) {}
void callbackFunction() {
std::cout << "Callback function called. Data: " << data << std::endl;
}
private:
int data;
};
// 模拟一个接受回调函数的函数
void someFunction(std::function<void()> callback) {
callback();
}
int main() {
MyClass obj(42);
// 使用 std::mem_fn 将成员函数指针转换为 std::function
std::function<void()> callback = std::mem_fn(&MyClass::callbackFunction)(obj);
someFunction(callback);
return 0;
}