先贴一段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)