有时候,一个类当中若干相同声明的函数,希望放到一个数组当中,批量执行,那么就可以定义一个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();
}
//---------------------------------------------------------------------------