首页 > 编程语言 >C++知晓某个key值,调用相应的类函数

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

时间:2023-04-07 14:56:02浏览次数:37  
标签:map 函数 int C++ key CClassTest 知晓 fnMethodExecute

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

相关文章

  • c++之静态库与动态库
    一.代码分发方式代码分发方式有三种: 二.动态库与静态库区别三.C/C++到可执行程序的过程:四总结首先清楚,一般来说源码包含.h+.cpp两个文件,而静态库包含.h+.lib文件,动态库包含.h+.lib+.dll,明显动态库要比静态库的文件要更零散一点;其次,要知道.h/.lib/.dll分别起到什么作用,......
  • C++
    EOF,为End Of File的缩写,通常在文本的最后存在此字符表示资料结束。在微软的DOS和Windows中,读取数据时终端不会产生EOF。此时,应用程序知道数据源是一个终端(或者其它“字符设备”),并将一个已知的保留的字符或序列解释为文件结束的指明;最普遍地说,它是ASCII码中的替换字符(Control-Z,代......
  • C/C++机房失物招领[2023-04-07]
    C/C++机房失物招领[2023-04-07]程序设计题:机房失物招领出题人:许棣华面向专业:软件工程难度等级:41问题描述经常有一些丢三落四的同学,在不经意的时候会丢失物品。比如:在机房,每天做值日的同学都会发现有U盘、钥匙、书本等物品被落下,他们会将这些物品放在固定位置或交由工作人员......
  • AppleScript key code
    https://eastmanreference.com/complete-list-of-applescript-key-codestellapplication"SystemEvents"keycode49endtellPlay:tellapplication"iTunes"toplayPause:tellapplication"iTunes"topause......
  • A C++ program that prints itself
    #include<iostream>usingnamespacestd;intmain(){strings="cout<<\"#include<iostream>\\nusingnamespacestd;\\n\\nintmain(){\\nstrings=\\\"\";\nfor(chari:s)\nif(i==�......
  • jackson序列化报 Null key for a Map not allowed in JSON (use a converting NullKey
    报错:"requestParam":null,"errorMsg":"org.springframework.http.converter.HttpMessageNotWritableException:CouldnotwriteJSON:NullkeyforaMapnotallowedinJSON(useaconvertingNullKeySerializer?);nestedexceptionisc......
  • c++ primer第一章
    11.2cinistream类型该对象被称为标准输入;coutostream对象被称为标准输出对象。cerr来输出警告和错误信息,clog来输出程序运行时的一般性消息。 写入endl的效果是结束当前行,并将与设备关联的缓冲区中的内容刷到设备中。缓冲刷新操作可以保证到目前为止程序所产生的所有输出......
  • C++/Qt网络通讯模块设计与实现(总结)
    至此,C++/Qt网络通讯模块设计与实现已分析完毕,代码已应用于实际产品中。C++/Qt网络通讯模块设计与实现(一)该章节从模块的功能需求以及非功能需求进行分析,即网络通讯模块负责网络数据包的发送、接收以及对外提供功能调用以及接口回调,其不进行产品业务的实现,达到平台化复用的目的,......
  • C++ thread 源码阅读笔记
    thread类解析构造函数thread()无参构造,会创建一个空的线程对象。thread(FunctionCallback,...Args)创建并开启一个线程,线程任务就是参数里的回调函数。thread(thread&&other)移动构造,具体请参照C++的移动语义。PS:thread类没有拷贝构造。thread(constthread&......
  • 如何获得OpenAI API Key及OpenAI绑卡充值教程
    原帖地址:如何获得OpenAIAPIKey及OpenAI绑卡充值教程参考:使用虚拟信用卡升级ChatGPTPlus及OpenAI付款设置教程如果您想使用OpeanAIAPI开发一个聊天机器人或者使用OpenAIAPI进行自动化办公,您首先要创建一个OpenAIAPIKey,方法如下:打开platform.openai.com,输入你的OpenAI帐号......