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)



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