#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; }