我已经做了一个功能的地图.所有这些函数都是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;
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);
一般来说,为什么扔掉安全?如果它是函数指针的映射,则将其声明为一个.