當需要對函數的執行順序進行更高層次的管理時,可以考慮使用函數指針。
類成員函數指針,顧名思義,即目的是對某個類的某些成員函數進行指針調用。
如下是一個運行模式相對簡單,但是實用的例子。
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;
}