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 }
View Code

 

转载于:https://www.cnblogs.com/symen/p/4168348.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值