一个非常简单的问题,但我找不到答案。我想这样做:
ClassA* a = MapOf_ptrMap[key1][key2];
,MapOf_ptrMap为map< string , ( map < string, ClassA* >)* >
对象。
MapOf_ptrMap[key1]
返回指向map<string, ClassA*>
对象的指针(此时我想让你知道我没有设计这个,只需要处理它)。
我已经尝试了#define X[Key1][Key2] (*(X[Key1]))[Key2]
但由于方括号而无效。我知道它适用于括号,但我宁愿保留括号。另外令我困扰的是define
别名不考虑X
的类型:我想检查输入类型为MapOf_ptrMap
类型。
有什么想法吗?
答案 0 :(得分:3)
说实话,define
不是“定义”类型的好方法。
改为使用typedef
。
为了我们的理智,让我们分解它:
using namespace std;
typedef map<string, ClassA *> map_value_t;
typedef map<string, map_value_t *> map_t;
具有std::
限定类型的版本(Spaghetti Monster的预期方式):
typedef std::map<std::string, ClassA *> map_value_t;
typedef std::map<std::string, map_value_t *> map_t;
现在,您应该能够声明map_t
类型的对象。
现在的问题是,我们如何从这个可怜的结构中获取东西?
map_t &blah; // comes from somewhere else.
map_value_t *submap = blah[i];
ClassA *value = *submap[j];