c++中由于函數(shù)調(diào)用時(shí)隱式增加了this指針,所以在callback調(diào)用時(shí)導(dǎo)致參數(shù)個(gè)數(shù)不一致而出錯(cuò)。
成員函數(shù)作為回調(diào),可以采用static的方式傳遞。因?yàn)閟tatic沒(méi)有使用this。
由于使用static所以在回調(diào)函數(shù)中
不能訪問(wèn)類(lèi)的非static成員,所以需要為類(lèi)增加一個(gè)指向自身的指針。
如:
1
static IMainLoop* pThis;//指向自身的指針,因?yàn)閟tatic不能訪問(wèn)非靜態(tài)變量,所以通過(guò)本指針調(diào)用非靜態(tài)變量。
注意使用這個(gè)指針前需要
全局初始化。
格式為:類(lèi)型 限定符::成員=值
如:
1
IMainLoop* BasicMainLoop::pThis =0;//需要全局定義以后才能使用靜態(tài)成員
posted on 2009-11-22 23:17
納蘭伴月 閱讀(810)
評(píng)論(0) 編輯 收藏 引用 所屬分類(lèi):
c++ 技巧