0

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

地图 :

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

我究竟做错了什么?

4

1 回答 1

2

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

MyClass obj;
(obj.*map[std::make_pair(val11, val21)])();
于 2013-05-22T10:03:30.737 回答