加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

功能地图c

发布时间:2020-12-16 03:20:21 所属栏目:百科 来源:网络整理
导读:我已经做了一个功能的地图.所有这些函数都是void并接收单个字符串参数. 码: void f1(string params){...}void f2(string params){...}void f3(string params){...}mapstring,void* funcMap;funcMap["f1"] =(void*)f1;funcMap["f2"] =(void*)f2;funcMap["f3"
我已经做了一个功能的地图.所有这些函数都是void并接收单个字符串参数.

码:

void f1(string params){...}
void f2(string params){...}
void f3(string params){...}

map<string,void*> funcMap;

funcMap["f1"] =(void*)&f1;
funcMap["f2"] =(void*)&f2;
funcMap["f3"] =(void*)&f3;

我如何调用函数?
我尝试了下一个代码,但是id不起作用:

void (*func)(string) =  &funcMap[commandType];
func(commandParam);

我收到此错误消息:

Server.cpp:160:46: error: cannot convert ‘void**’ to ‘void (*)(std::string) {aka void (*)(std::basic_string<char>)}’ in initialization

解决方法

typedef void (*pfunc)(string);

map<string,pfunc> funcMap; 
funcMap["f1"] = f1; //and so forth

然后打电话:

pfunc f = funcMap[commandType];
(*f)(commandParam);

一般来说,为什么扔掉安全?如果它是函数指针的映射,则将其声明为一个.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读