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

で間違った括弧を使用しており、( or演算子を使用して) のmake_pairインスタンスでメンバー関数を呼び出す必要があります。MyClass.*->*

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