本文共 1117 字,大约阅读时间需要 3 分钟。
#include #include #include using namespace std;class Test;typedef void (Test::*pFunc)(int);class Test { public: Test(const std::string &name); void f1(int); void f2(int); void f3(int); void display(int i); private: static std::map num2func; std::string classname;};std::map Test::num2func;Test::Test(const std::string &name){ classname = name; if (num2func.empty()) { num2func[1] = &Test::f1; num2func[2] = &Test::f2; num2func[3] = &Test::f3; }}void Test::display(int i){ if (num2func.find(i) != num2func.end()) { (this->*num2func[i])(i); }}void Test::f1(int n) { cout << classname << "\t" << n << endl; } void Test::f2(int n) { cout << classname << "\t" << n << endl; } void Test::f3(int n) { cout << classname << "\t" << n << endl; } int main(int argc, char *argv[]){ Test t1("t1"); Test t2("t2"); t1.display(1); t2.display(2); return 0;}
编译输出:
t1 1t2 2
转载于:https://my.oschina.net/tsh/blog/1608699