如何填写和访问std :: map ,funcPtr>?

问题描述 投票:0回答:1

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

地图 :

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

我究竟做错了什么?

c++ dictionary enums function-pointers std-pair
1个回答
2
投票

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

MyClass obj;
(obj.*map[std::make_pair(val11, val21)])();
© www.soinside.com 2019 - 2024. All rights reserved.