アプリ版:「スタンプのみでお礼する」機能のリリースについて

お忙し中、失礼します。
プログラミングのついて質問させて下さい。

使用言語: 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の仕様が分かっておらず勉強中の身で
申し訳ないです。

助言頂ければ幸いです。
どうかよろしくお願いします。

A 回答 (2件)

std::map<X, Y> の個々の要素は std::pair<const X, Y> で、イテレータも pair を指しています。



pair のそれぞれの要素は first, second メンバとしてアクセスできるので、

test* p = iterator->second;
p->Term();

あるいは、同じことですが

iterator->second->Term();

で実現できると思います。
    • good
    • 0

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

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!