c++ 關於類成員函數指針

當需要對函數的執行順序進行更高層次的管理時,可以考慮使用函數指針。

類成員函數指針,顧名思義,即目的是對某個類的某些成員函數進行指針調用。


如下是一個運行模式相對簡單,但是實用的例子。

CA是自定義的一個類,下面是它的3個成員函數。

void F1(void);
void F2(void);
void F3(void);

我現在希望能夠實現:在沒有滿足某個條件時,函數按F1,F2,F3的順序執行;而當滿足這個條件時,函數執行完當前函數後不再執行後面的函數。


以上流程,用if-else很容易實現,但當所需要執行的函數不止3個時,就不好寫了。這時該類成員函數指針出場了,它顯然更適合於大型系統程序。


在安排運行F1-F3的cpp文件裏這麼寫:

CA ca;

CA* pCa;

bool Stop;

typedef void (CA::*PTRFUN)(void); 

list<PTRFUN> list_pFun;
list<PTRFUN>::iterator it;

list_pFun.push_back(&CA::F1);
list_pFun.push_back(&CA::F2);

list_pFun.push_back(&CA::F3);

for(it=list_pFun.begin();it!=list_pFun.end();it++)
{
(pCa->**it)();
if(Stop) //Stop由鍵盤控制,實現在另一個線程裏
break;
}





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