在std::map中使用std::函数

Using std::function in std::map

本文关键字:std 函数 map      更新时间:2023-10-16

我想在std::map中使用std::函数,遵循代码:

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

std::map收到一个Key和一个T,但我的代码中出现了一个不知道的错误,他无法访问std::map函数(insert,end,find…)

使用typedef,他跑了。但是为什么std::函数没有运行呢?

我解雇了:怎么了?

之前:如何解决--代码样本请=D;

感谢的帮助

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

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

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

  • 如果您不想使用typedef

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