0

一个非常简单的问题,但我找不到答案。我想做这个 :

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:我想用 type 检查输入MapOf_ptrMap类型。

任何的想法 ?

4

1 回答 1

3

坦率地说,define这不是“定义”类型的好方法。

改用 a typedef

为了我们的理智,让我们分解一下:

using namespace std;
typedef map<string, ClassA *> map_value_t;
typedef map<string, map_value_t *> map_t;

具有std::合格类型的版本(意大利面条怪物的意图):

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];
于 2013-03-28T15:17:11.900 回答