c++回调

c++回调包含类函数回调和非类函数回调。

类函数回调,函数指针指向函数名称,需要带类作用域,调用时需要用到类指针。

如qt里面定义一个返回值为qbytearray的函数指针,

 typedef QByteArray (myThead::*Func_Construct)(QByteArray line);//定义函数指针

    QByteArray deviceStatus_construct(QByteArray);
    QByteArray realData_construct(QByteArray line);
    QByteArray dayRun_construct(QByteArray);
    QByteArray monthCheck_construct(QByteArray line);
    QByteArray flag_construct(QByteArray line);
    QByteArray palarm_construct(QByteArray line);
    QByteArray deviceDefine_construct(QByteArray line);
    QByteArray staff_construct(QByteArray line);
    QByteArray deviceStatus_construct_str(QString line);

   case e_deviceStatus:
        pFunc = &myThead::deviceStatus_construct;
        break;
    case e_realData:
        pFunc = &myThead::realData_construct;
        break;
    case e_dayRun:
        pFunc = &myThead::dayRun_construct;
        break;
    case e_monthCheck:
        pFunc = &myThead::monthCheck_construct;
        break;
    case e_flag:
        pFunc = &myThead::flag_construct;
        break;
    case e_palarm:
        pFunc = &myThead::palarm_construct;
        break;
    case e_deviceDefine:
        pFunc = &myThead::deviceDefine_construct;
        break;
    case e_staff:
        pFunc = &myThead::staff_construct;

回调:
QByteArray btLine = (this->*pFunc)(strLine.toUtf8());

非类指针则简单得多:

 1 typedef void (*Func)(int ,int )
 2 void func1(int numA,int numB){
 3      printf(numA+numB);
 4 }
 5
 6 void func2(int numA,int numB){
 7    printf(numA - numB);
 8 }
 9
10 int main(){
11      int numA = 10;
12     int numB=5;
13       Func pFunc = &func1;
14      pFunc (numA ,numB);
15      pFunc = &func2;
16      pFunc(numA,numB);
17     return0;
18 }

时间: 2024-07-30 23:49:55

c++回调的相关文章

谈谈-Android中的接口回调技术

Android中的接口回调技术有很多应用的场景,最常见的:Activity(人机交互的端口)的UI界面中定义了Button,点击该Button时,执行某个逻辑. 下面参见上述执行的模型,讲述James对Android接口回调技术的理解(结合前人的知识和自己的实践). 使用一个比喻很形象地说明:客户端有个疑问打电话请教服务端,但服务端无法现场给出解答,相互之间约定:服务端一旦有答案,使用电话的方式反馈给客户端. 以上有三个主体:客户端.服务端和接口(方式). 接口回调的原理框图说明: Demo界面

android使用友盟实现第三方登录、分享以及微信回调无反应问题解决办法

        Leaning_wk每一次的进步都会拉近与成功的距离! 帐号设置退出   关闭 qq_15855289的博客 目录视图 摘要视图 订阅 异步赠书:Kotlin领衔10本好书      免费直播:AI时代,机器学习如何入门?      程序员8月书讯      每周荐书:Java Web.Python极客编程(评论送书) android使用友盟实现第三方登录.分享以及微信回调无反应问题解决办法 标签: android友盟第三方登录分享微信登录回调问题 2017-02-10 16:2

php7微信支付回调失败

升级完PHP7 发现微信支付回调失败.原来是 $GLOBALS['HTTP_RAW_POST_DATA'];没有定义的问题.php7 移除了这个全局变量. 修改如下: //获取通知的数据 $xml = $GLOBALS['HTTP_RAW_POST_DATA'];//这里在php7下不能获取数据,使用 php://input 代替 if(!$xml){ $xml = file_get_contents("php://input"); }

Android实现组件之间同步的回调通信

Android开发中,有时会遇到组件之间相互通信回调的问题.一般都是通过Android提供的ResultReceiver来实现(ResultReceiver的使用方法很简单,这里就不多提了). 但之前在工作中,遇到了一个组件间回调的问题,ResultReceiver无法满足需求.简单描述一下问题:service中打开了一个activity,activity需要将一个变量值回调给service,而且这个回调必须是同步的.也就是说activity在确认service接收到了这个变量值后,才能继续向下

嵌入式&iOS:回调函数(C)与block(OC)传 参/函数 对比

C的回调函数: callBack.h 1).声明一个doSomeThingCount函数,参数为一个(无返回值,1个int参数的)函数. void DSTCount(void(*CallBack)(int data_i32)); callBack.c 1).在doSomeThingCount函数,对运行次数自增,并调用参数--函数. void DSTCount(void(*CallBack)(int data_i32)) { static int numb = 0; numb++; (*Call

回调函数的本质,就是把函数当作参数(首先要定义函数类型)

//把一个方法当作另一个方法的参数, 就是回调方法, 大家习惯称作回调函数 type   TFunType = function(i: Integer): Integer; {声明一个方法类型} function MyFun(i: Integer): Integer;        {建立类型兼容的函数} begin   Result := i*2; end; {把函数当作参数, 再定义一个函数} function MyTest(x: Integer; F: TFunType): Integer

js异步回调

简单理解:js是单线程的,Ajax请求远程数据.IO等会很耗时,引起堵塞可能会引起反应时间太长页面失去反应. 回调:A函数作为一个参数传给B函数,执行完B后再执行A: 同步回调: 1 function A{ 2 alert('1'); 3 } 4 function B(nn){ 5 alert('2'); 6 nn(); 7 } 8 B(A); 原文网址:http://www.html5cn.org/article-9915-1.html?utm_medium=hao.caibaojian.co

Java回调机制

以前不理解什么叫回调,天天听人家说加一个回调方法啥的,心里想我草,什么叫回调方法啊?然后自己就在网上找啊找啊找,找了很多也不是很明白,现在知道了,所谓回调:就是A类中调用B类中的某个方法C,然后B类中反过来调用A类中的方法D,D这个方法就叫回调方法,这样子说你是不是有点晕晕的,其实我刚开始也是这样不理解,看了人家说比较经典的回调方式: Class A实现接口CallBack callback——背景1 class A中包含一个class B的引用b ——背景2 class B有一个参数为call

MFC 定时器 SetTimer 如何使用回调函数

创建工程名TestCallBack 自定义回调函数   定义为全局函数 在TestCallBackDlg.h文件开头定义 #pragma once void CALLBACK EXPORT TimerProc(HWND hWnd,UINT nMsg,UINT nTimerid,DWORD dwTime); 在TestCallBackDlg.cpp文件末尾实现函数 void CALLBACK EXPORT TimerProc(HWND hwnd,UINT message,UINT iTimerID

回调在python中

回调 函数作为参数 函数执行=> 到一个参数函数时=> 调用另一个函数=> 回到主函数 #!/usr/bin/env python # -*- coding:utf-8 -*- __author__ = 'teng' def test(callback):     print 'test func begin'     callback() def test1(callback):     print 'test1 func begin'     for func in callback