我想知道如何填充这种类型的映射,主要是如何访问函数指针。
map :
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)])();
关于c++ - 如何填充和访问std::map<std::pair<enum1, enum2>, funcPtr>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16688953/