1、类函数中定义一个map表
typedef int (CClassTest::*pfnMethodExe)(std::string strInput,int nInputNum);
std::map<std::string, pfnMethodExe> m_fnMethodExecute;
CClassTest为类名,typedef int中的int为函数返回值,可以为其他值
2、key值和函数对应关系放入map表中
m_fnMethodExecute.insert(pair<string, pfnMethodExe>("GetClassTestKey", &CClassTest::MethodGetClassTestFun));
其中MethodGetClassTestFun为CClassTest的类函数,GetClassTestKey为该函数对应的key值
3、简单使用
std::string strMethodKey = "GetClassTestKey";
int nRet = -1;
map<string, pfnMethodExe>::iterator iter = m_fnMethodExecute.find(strMethodKey );
if (iter != m_fnMethodExecute.end())
{
nRet = (this->*m_fnMethodExecute[method])(strInput,nInputNum);//strInput,nInputNum为实际输入的参数//nRet 为对应函数返回值
}
else
{
//未找到对应的key值相应的处理函数
}
应用场景:该方法适用与有相同的函数形参,但是实际执行功能不同,可以根据上层调用者传下来的某个key值确定应该执行哪些功能
标签:map,函数,int,C++,key,CClassTest,知晓,fnMethodExecute From: https://www.cnblogs.com/LYF-LIUDAO/p/17296130.html