在 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;
我想在 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;