C++知晓某个key值,调用相应的类函数

发布时间 2023-04-07 14:55:36作者: 冥天笑

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值确定应该执行哪些功能