我很难在类本身内部映射类成员的功能
#include <functional>
#include <map>
#include <string>
class Foo{
public:
void bar() {}
void jar() {}
private:
std::map<std::string, std::function<void(void)>> myMap =
{
{"bar", bar},
{"jar", jar}
};
};
编译器说不
严重性代码描述项目文件行抑制状态抑制状态错误(活动)E0289没有构造函数实例“ std :: map <_kty> :: map [with _Kty = std :: string,_Ty = std :: function,_Pr = std :: less,_Alloc = std :: allocator >>]“与参数列表匹配Stackoverflow C:\ Stackoverflow \ Foo.h 13
请帮助,谢谢。
[bar
和jar
是成员函数。它们将指针-this
作为第一个隐藏参数,您不能将它们视为自由功能。而且,您不能仅仅通过指向它们的指针将它们包装到function<void(void)>
中-您现在正在做什么。
@ rafix07的答案的某些替代方法: