当需要对函数的执行顺序进行更高层次的管理时,可以考虑使用函数指针。
类成员函数指针,顾名思义,即目的是对某个类的某些成员函数进行指针调用。
如下是一个运行模式相对简单,但是实用的例子。
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;
}