- 締切済み
[C++]std:mapの扱いを教えて頂けますか?
お忙し中、失礼します。 プログラミングのついて質問させて下さい。 使用言語: C++ 使用ヘッダファイル:<map> [質問] 動的確保したstd:mapを解放したいのですが、 mapの第二引数にクラスポインタを与えた場合、 登録したクラスのメンバ関数を呼び出すことは 出来るでしょうか? もし可能ならば、方法を教えて頂けないでしょうか?? 自作クラス class C; class test { //メンバ変数 private: C m_pC; //メンバ関数 public: test(); //コンストラクタ ~test(); //デストラクタ //初期化処理 void Init() { m_pC = new C(); } //終了処理 void Term() { delete m_pC; m_pC = NULL; }} }; map 定義 map< ID , test* >* pMap; マップ解放処理 std::map< ID ,test*>::iterator iterator; iterator = pMap->begin(); for(iterator ; iterator != pMap.End();iterator++) { //************************ // // ここでtestクラスの解放処理を呼び出したい // 例) test->Term() // //************************* } //マップ登録要素クリア pMap->clear(); まだ、mapの仕様が分かっておらず勉強中の身で 申し訳ないです。 助言頂ければ幸いです。 どうかよろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- fresh_homepie
- ベストアンサー率64% (24/37)
std::map<X, Y> の個々の要素は std::pair<const X, Y> で、イテレータも pair を指しています。 pair のそれぞれの要素は first, second メンバとしてアクセスできるので、 test* p = iterator->second; p->Term(); あるいは、同じことですが iterator->second->Term(); で実現できると思います。
- Tacosan
- ベストアンサー率23% (3656/15482)
map<ID, test*>::iterator::operator *() の返り値の型は何でしょうか?