丹阳做网站的公司,学做网站难不难,做互联网一个月挣多少钱,西安免费网站搭建制作遇见一个场景#xff0c;收到的tcp消息有个OperationID#xff0c;然后执行具体的任务#xff08;函数#xff09;#xff0c;在c#中使用Dictionary结合委托一点没问题#xff0c;c#代码如下#xff1a; public delegate void TcpHandler();DictionaryOperateID, Tc…遇见一个场景收到的tcp消息有个OperationID然后执行具体的任务函数在c#中使用Dictionary结合委托一点没问题c#代码如下 public delegate void TcpHandler();DictionaryOperateID, TcpHandler dicSAOperateID new DictionaryOperateID, 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 mapclass delegateTest
{
public:std::mapint, 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