zoukankan      html  css  js  c++  java
  • 如何使用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(); } //---------------------------------------------------------------------------

      

  • 相关阅读:
    Oracle 10g AND Oracle 11g手工建库案例--Oracle 11g
    第十七篇:实例分析(1)--初探WDDM驱动学习笔记(八)
    Git权威指南学习笔记(二)Git暂存区
    C++11多线程教学II
    c++ 11 多线程教学(1)
    C++11 多线程 基础
    C++11下的线程池以及灵活的functional + bind + lamda
    intel线程库tbb的使用
    TBB入门
    TTB 基本
  • 原文地址:https://www.cnblogs.com/songr/p/14671923.html
Copyright © 2011-2022 走看看