类成员函数作为回调函数

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

posted @   左边的翼  阅读(299)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示