[英]How to fill and access to std::map<std::pair<enum1, enum2>, funcPtr>?
我想知道如何填充这种类型的地图,主要是访问函数指针的方式。
地图 :
enum enum1
{
val11,
val12,
val13
};
enum enum2
{
val21,
val22,
val23
};
typedef void(MyClass::*funcPtr)();
std::map<std::pair<enum1, enum2>, funcPtr> map;
我这样填写它似乎工作:
map.insert(std::make_pair(std::make_pair(val11, val21), &MyClass::init));
但我无法访问这样的功能:
map[std::make_pair<val11, val21>]();
我究竟做错了什么?
你在make_pair
中使用了错误的括号,需要在某个MyClass
实例上调用成员函数(使用.*
或->*
运算符):
MyClass obj;
(obj.*map[std::make_pair(val11, val21)])();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.