如何填写和访问std :: map <std :: pair <enum1,enum2 =“”>,funcPtr&gt;?</std :: pair <enum1,>

时间:2013-05-22 10:02:13

标签: c++ dictionary enums function-pointers std-pair

我想知道如何填充这种类型的地图,主要是访问函数指针的方式。

地图:

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>]();

我做错了什么?

1 个答案:

答案 0 :(得分:2)

您使用make_pair的错误括号,需要在MyClass的某个实例上调用成员函数(使用.*->*运算符):

MyClass obj;
(obj.*map[std::make_pair(val11, val21)])();