1、类静态成员函数作为回调函数
1)类定义
CommonFunctions.h class CommonFunctions { public: CommonFunctions(); static int add_test(int a, int b); };
CommonFunctions.cpp #include "CommonFunctions.h" CommonFunctions::CommonFunctions() { } int CommonFunctions::add_test(int a, int b) { return a + b; }
2)应用实例
#include <iostream> #include "CommonFunctions.h" typedef int(*CallBackFunction)(int a, int b); CallBackFunction CallBackFunction_PTR; void set_call_back(CallBackFunction cbf) { CallBackFunction_PTR = cbf; } int main() { set_call_back(CommonFunctions::add_test); std::cout << CallBackFunction_PTR(5, 6); std::cout << "\r\n"; system("pause"); }
2、类的普通成员函数不能作为回调函数
回调函数的本质是传递函数指针,即函数地址,类的普通成员函数地址是在类实例化完成后确定的,而类的静态成员函数或者全局函数地址是确定的,所以静态成员函数或全局函数在代码编译阶段均不报错,类的普通成员函数在代码编译阶段提示错误;但是类的普通成员函数也可通过this指针静态处理等方式完成身份转换,可作为回调函数使用,方法尚未进行仔细学习,后续有机会将再补充。