C++类中函数指针的用法

mac2025-04-19  1

#include <iostream> #include <string> #include <map> #include <vector> using namespace std;

class A { public:     typedef void (A::*PROC)(int a1, int a2);///这里的PROC是void ()(int a, int b)类型的变量,函数指针     typedef map<string, PROC> ProcMap;///给这个类型取别名叫做ProcMap     typedef ProcMap::iterator ProcMapIt;     ProcMap    m_methodMap;///用这个类型定义了一个变量叫做m_methodMap

public:     A()     {         ///这里可以根据string类型调用不同的函数进行处理         m_methodMap.insert(std::pair<string, PROC>("post", (PROC)&A::methodA));         m_methodMap.insert(std::pair<string, PROC>("111", (PROC)&A::methodA));         m_methodMap.insert(std::pair<string, PROC>("aaa", (PROC)&A::methodA));         m_methodMap.insert(std::pair<string, PROC>("bbb", (PROC)&A::methodA));     }

    void p()     {         int a = 1;         int b = 2;         ///这里可以根据不同的字符串调用不同的函数,参数是必现相同的         ProcMapIt it = m_methodMap.begin();         while (it != m_methodMap.end())         {             ///this->*it->second是A类的methodA的函数             (this->*it->second)(a++, b++);

            it++;         }     }

    void methodA(int a, int b)     {         cout << "a = " << a << " b = " << b << endl;     } };

int main() {     A a;     a.p();

    return 0; }  

最新回复(0)