我想知道如何填充这种类型的地图,主要是访问函数指针的方式。
地图:
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>]();
我做错了什么?
答案 0 :(得分:2)
您使用make_pair
的错误括号,需要在MyClass
的某个实例上调用成员函数(使用.*
或->*
运算符):
MyClass obj;
(obj.*map[std::make_pair(val11, val21)])();