C++ 程序中的回调

先贴一段c++的回调定义

typedef void (CCObject::*ChargePayCallback)(bool success, int chargeItem, unsigned long userData, const char* msg)


是的这段代码,我用不同的颜色区分开了

1、先说typedef,简单的应用是:

typedef int size;

size是int的另外一个名字,所以用到int的地方都可以用size代替,所以typedef是起“外号”用的

而这里的用法是如同#define的宏定义


2、(CCObject::*ChargePayCallback)

这是一个函数指针,ChargePayCallback是函数指针,在写回调的时候,就相当于:

ChargePayCallback = callback;

(*callback)(bool success, int chargeItem, unsigned long userData, const char* msg);

而我这里前面写的CCObject就是,这个函数必须是CCObject可以调用的,不然不是成员函数,调的话会破坏代码结构,所以这个可以当做(函数必须是我类(实例对象)里面的,不然调不了的意思)

3、(bool success, int chargeItem, unsigned long userData, const char* msg)

这个便是函数指针的参数

4、返回void



调用实例:

定义:

typedef void (CCObject::*ChargePayCallback)(bool success, int chargeItem, unsigned long userData, const char* msg);

调用:

xxx::pay(0, 0, this, (ChargePayCallback)&yyy::chargePayCallback)


回调定义:

static void pay(int chargeItem, unsigned long userData, CCObject* target, ChargePayCallback callback){
(target::*callback)(success,chargeItem,userData,msg);//这个就是回调,调到回调函数里

}


回调函数:

void yyy::chargePayCallback(bool success, int chargeItem, unsigned long userData, const char* msg)



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章