有时候,一个类当中若干相同声明的函数,希望放到一个数组当中,批量执行,那么就可以定义一个vector<T> T是成员函数指针类型。
成员函数指针和static指针声明有些区别,下面是实际的例子
设一个BLL类,又proc1 proc2 proc3 3个成员函数,初始化的时候,都压入m_Procs数组,调用Do方法的时候,依次支持数组中压入的成员函数。
#include <vector>
using namespace std;
class BLL
{
private:
    typedef void (BLL::*p_proc)();
    vector<p_proc> m_Procs;
private:
    void proc1()
    {
        // 第一步
        MessageBox(NULL,"第一步","提示",MB_OK);
    }
    void proc2()
    {
        // 第二步
        MessageBox(NULL,"第二步","提示",MB_OK);
    }
    void proc3()
    {
        // 第三步
        MessageBox(NULL,"第三步","提示",MB_OK);
    }
public:
    BLL()
    {
        m_Procs.push_back(&BLL::proc1);
        m_Procs.push_back(&BLL::proc2);
        m_Procs.push_back(&BLL::proc3);
    }
    void Do()
    {
        for (size_t i = 0 ; i < m_Procs.size() ;i++)
        {
            (this->*m_Procs[i])();
        }
    }
};
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::btn1Click(TObject *Sender)
{
    BLL bll = BLL();
    bll.Do();
}
//---------------------------------------------------------------------------