0

非常に単純な質問ですが、答えが見つかりません。私はこれをしたい:

ClassA* a = MapOf_ptrMap[key1][key2];MapOf_ptrMapmap< string , ( map < string, ClassA* >)* >オブジェクトを使用します。

MapOf_ptrMap[key1]オブジェクトへのポインターを返しmap<string, ClassA*>ます (この時点で、これを設計したのではなく、対処する必要があることを知っておいてください)。

試してみまし#define X[Key1][Key2] (*(X[Key1]))[Key2]たが、括弧が原因で機能しません。括弧で機能することは知っていますが、むしろ括弧を保持します。また、defineエイリアスがの型を考慮していないことも気になります。X入力型を型で確認したいと思いますMapOf_ptrMap

何か案が ?

4

1 に答える 1

3

率直に言って、defineタイプを「定義」するのはあまり良い方法ではありません。

typedef代わりにaを使用してください。

そして、私たちの正気のためにそれを分解しましょう:

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;

これで、 type のオブジェクトを宣言できるはずです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 に答える