私は動的に作成するいくつかのオブジェクトを持っています。これらのオブジェクトはグローバルに定義されています。動的オブジェクトへのポインタを含む他のベクトルを含むベクトル
Object *obj1 = new Object;
Object *obj2 = new Object;
Object *obj3 = new Object;
これらのオブジェクトをすべて格納するベクターもあります。
std::vector<Object*> cntr;
cntr.push_back(obj1);
cntr.push_back(obj2);
cntr.push_back(obj3);
私は上記のようないくつかの他のベクトルを作成し、これらに類似のオブジェクトを設定します。私は、これらのオブジェクトのいずれかのメンバ関数のいずれかにアクセスしたい場合は
std::vector<Object*> cntr2;
std::vector<Object*> cntr3;
私は単にこれを書くことができます。しかし
cntr[i]->memberFunction();
cntr2[i]->memberFunction();
を、後で私のコードで私は、同様のベクトルを格納するためのベクトルを作成しますObject型*
std::vector< std::vector<Object*> > GroupCntr;
GroupCntr.push_back(cntr);
GroupCntr.push_back(cntr2);
私は今に直面しています問題はGroupCntrに格納されているベクトルに格納されているオブジェクトのメンバ関数にアクセスする方法ですか?私はすべての組み合わせを試しました
* -> () [] (*)
成功しません。私はまた、この種のコードでは、生ポインタの使用に大きく依存しており、所有権の主題を疑問に思うので、私が批判されるかもしれないことを認識しています。しかし、私は本当にこの運動がどのように達成できるか知りたいですか?
'GroupCntr [OUTER_INDEX] [INNER_INDEX] - > object_member;' – Zereges
あなたが必要とするすべてのベクトルの要素にアクセスする方法を知ることです。それでおしまい。それについてちょっと考えてみてください。 – juanchopanza