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