在 std::map 中使用 std::function

Using std::function in std::map

我想在 std::map 中使用 std::function,请遵循代码:

#include <functional>
#include <map>

class MyClass {
    ...
    std::function<void()> Callback();
    std::map<std::string, Callback> my_map;
    ...
}

std::map 收到一个 Key 和一个 T,但不知道我的代码中有什么错误,他无法访问 std::map 函数(插入、结束、查找...)

使用typedef,他run.But为什么std::function不是运行?

我第一位:有什么问题吗?

之前:如何解决? --代码示例请=D;

感谢帮助

您已将 Callback 声明为函数(返回 std::function),而不是类型。您需要一个类型来声明您在地图中存储的内容。我猜你想要

typedef std::function<void()> Callback;

还有另一种声明映射的方法,具有 class 函数 ptr。

  • 如果不想用typedef.

    std::map<std::string, void (MyClass::*)()> my_map;