• 締切済み

[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の仕様が分かっておらず勉強中の身で 申し訳ないです。 助言頂ければ幸いです。 どうかよろしくお願いします。

みんなの回答

回答No.2

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)
回答No.1

map<ID, test*>::iterator::operator *() の返り値の型は何でしょうか?