当前位置: 首页 > news >正文

c++函数指针作为std::map值

遇见一个场景,收到的tcp消息有个OperationID,然后执行具体的任务(函数),在c#中使用Dictionary结合委托一点没问题,c#代码如下:

      public delegate void TcpHandler();Dictionary<OperateID, TcpHandler>  dicSAOperateID = new Dictionary<OperateID, TcpHandler>();dicSAOperateID.Add(OperateID.NoAction, new TcpHandler(noAction));dicSAOperateID.Add(OperateID.Connect, new TcpHandler(connect));dicSAOperateID.Add(OperateID.DisConnect, new TcpHandler(disConnect));public void runOperation(int SA_OperateID){if (dicSAOperateID.ContainsKey((OperateID)SA_OperateID)){dicSAOperateID[(OperateID)SA_OperateID]();}}

但现在要使用c++实现这一功能,但中间好像有各种问题,最终能够跑通的c++如下供后来者参考:

#include <map>class delegateTest
{
public:std::map<int, void(*)()>dic;public:delegateTest(){dic.emplace(1, delegateTest::testFunc1);dic.emplace(2, delegateTest::testFunc2);dic[2]();dic[1]();}static void testFunc1(){std::cout << "testFunc1" << std::endl;}static void testFunc2(){std::cout << "testFunc2" << std::endl;}
};

测试:

	delegateTest test;

结果输出:

testFunc2
testFunc1
http://www.lryc.cn/news/225203.html

相关文章:

  • data对象内新增属性,console.log()可以打印出来,不重新渲染
  • React:实现一个定时器计数器,每秒自动+1
  • rocksdb 中 db_bench 的使用方法
  • 【前端】TypeScript核心知识点讲解
  • 【工具推荐】一键多平台文章发布神器推荐(免费)
  • PDF有限制密码,不能复制怎么办?
  • 【原创学位论文】基于python和定向爬虫的商品比价系统.docx
  • 【Proteus仿真】【STM32单片机】汽车尾灯控制设计
  • 多线程—锁
  • uniapp使用vue
  • 能源监测管理系统有哪些作用与效果?
  • 数据分析是什么?
  • 【kafka】Java客户端代码demo:自动异步提交、手动同步提交及提交颗粒度、动态负载均衡
  • 【Git】Gui图形化管理、SSH协议私库集成IDEA使用
  • AIX5.3安装weblogic10.3
  • 聊聊logback的FixedWindowRollingPolicy
  • 详解机器学习最优化算法
  • 文件缓存的读写
  • Debian 修改主机名
  • 多线程返回计时问题代码案例
  • 【STM32】STM32的Cube和HAL生态
  • 汇编-EQU伪指令(数值替换)
  • 超声波俱乐部分享:Enter AI native application
  • 软件测试项目实战经验附视频以及源码【商城项目,app项目,电商项目,银行项目,医药项目,金融项目】(web+app+h5+小程序)
  • HarmonyOS应用开发-ArkTS基础知识
  • mybatis嵌套查询子集合只有一条数据
  • Github 生成SSH秘钥及相关问题
  • STM32外设系列—MPU6050角度传感器
  • 网站小程序分类目录网源码系统+会员登录注册功能 带完整搭建教程
  • 【Linux网络】手把手实操Linux系统网络服务DHCP