您的位置:首页 > 其它

map管理成员函数指针

2016-07-18 18:03 232 查看
转自:http://bbs.csdn.net/topics/290032347

概括:将成员函数指针名和同名的string类型的变量名进行绑定,插入到map中。

在使用时就可以通过找到string类型的变量名来使用同名的函数

#include "iostream"
#include "string"
#include "map"
using namespace std;

class test
{
public :
void fun1() { cout<<"call test::fun1"<<endl; }
void fun2() { cout<<"call test::fun2"<<endl; }
void fun3() { cout<<"call test::fun3"<<endl; }

test()
{
m_mapFun["test::fun1"] = &test::fun1;
m_mapFun["test::fun2"] = &test::fun2;
m_mapFun["test::fun3"] = &test::fun3;
}

void call(string strfun)
{
if (m_mapFun.find(strfun) == m_mapFun.end())
cout<<"no function : "<<strfun<<endl;
else
(this->*m_mapFun[strfun])();
}
protected :
typedef void (test::*mfun)();
map<string, mfun> m_mapFun;
};

int main()
{
test t;
t.call("test::fun1");
t.call("test::fun2");
t.call("test::fun3");
t.call("test::fun4");
return 0;
}

-----------------
结果:
call test::fun1
call test::fun2
call test::fun3
no function : test::fun4
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: