繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM