类本身内部的Map函数类成员

问题描述 投票:-1回答:2

我很难在类本身内部映射类成员的功能

#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

请帮助,谢谢。

c++ stdmap std-function
2个回答
0
投票

[barjar是成员函数。它们将指针-this作为第一个隐藏参数,您不能将它们视为自由功能。而且,您不能仅仅通过指向它们的指针将它们包装到function<void(void)>中-您现在正在做什么。


0
投票

@ rafix07的答案的某些替代方法:

© www.soinside.com 2019 - 2024. All rights reserved.