类成员函数作为回调函数

发布时间 2023-11-23 16:25:54作者: 左边的翼

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指针静态处理等方式完成身份转换,可作为回调函数使用,方法尚未进行仔细学习,后续有机会将再补充。