使用方法
1 定义基本类型
typedef std::function<int (int,int)> CbFunc;
2 定义回调函数的设置接口
void SetCallBackFunction(CbFunc func)
3 回调参数(通常回调参数需要static类型,而类成员函数可以通过bind函数实现转换)
auto cb = std::bind(&TestCallBack::sum, this, std::placeholders::_1, std::placeholders::_2);
代码示例
#include <cwchar>
#include <functional>
#include <iostream>
///< 定义
typedef std::function<int(int, int)> CbFunc;
CbFunc sFunc = nullptr;
///< 设置回调函数
void SetCallBackFunction(CbFunc func) {
sFunc = func;
return;
}
///< 运行目标函数
void RunTarget() {
if (nullptr != sFunc) {
int rval = sFunc(1, 2);
printf("Rval %d\n", rval);
}
}
///< 定义
class TestCallBack {
public:
int sum(int a, int b) { return a + b + c_; }
void run() {
auto cb = std::bind(&TestCallBack::sum, this, std::placeholders::_1,
std::placeholders::_2);
SetCallBackFunction(cb);
}
private:
int c_ = 0;
};
int main() {
TestCallBack test;
test.run();
RunTarget();
return 0;
}