- 使用函数指针(非静态成员函数):
- 非静态成员函数有一个隐含的
this
指针参数,不能直接作为普通函数指针使用。需要使用 std::function
和 std::bind
来处理。
- 首先定义类
MyClass
:
class MyClass {
public:
void callbackFunction(int value) {
std::cout << "Callback received value: " << value << std::endl;
}
};
- 然后定义
registerCallback
函数,它接受一个 std::function<void(int)>
类型的回调函数:
#include <iostream>
#include <functional>
using namespace std;
void registerCallback(std::function<void(int)> callback) {
// 模拟调用回调函数
callback(42);
}
int main() {
MyClass obj;
std::function<void(int)> callback = std::bind(&MyClass::callbackFunction, &obj, std::placeholders::_1);
registerCallback(callback);
return 0;
}
- 使用静态成员函数:
- 静态成员函数没有隐含的
this
指针,可以直接作为普通函数指针使用。
- 定义类
MyClass
并包含静态成员函数:
class MyClass {
public:
static void callbackFunction(int value) {
std::cout << "Static callback received value: " << value << std::endl;
}
};
- 定义
registerCallback
函数,接受一个函数指针类型的回调函数:
#include <iostream>
using namespace std;
typedef void (*CallbackFunction)(int);
void registerCallback(CallbackFunction callback) {
// 模拟调用回调函数
callback(42);
}
int main() {
registerCallback(MyClass::callbackFunction);
return 0;
}