C/C++教程

如何使用C++成员函数指针

本文主要是介绍如何使用C++成员函数指针,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
有时候,一个类当中若干相同声明的函数,希望放到一个数组当中,批量执行,那么就可以定义一个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();
}
//---------------------------------------------------------------------------

  

这篇关于如何使用C++成员函数指针的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!