Bonjour,
J'essaye de réaliser un petit bomberman.
Pour l'explosion des bombes, j'utilise des threads pour pouvoir les animer.
A la fin de l'animation, et donc du thread, j'ai besoin de supprimer cette bombe.
Je les crée dynamiquement, et donc je doit gérer leur destruction.
Voici les codes (raccourcis)
//Le thread appelé pour animer la bombe
void Bombe::boomThread()
{
// ....
sf::sleep(sf::milliseconds(DELAY_EXPLODE));
m_map->delBombe(this);
}
//suppression de la bombe
void Map::delBombe(Bombe *b)
{
unsigned int i;
for(i = 0 ; i < m_bombes.size() ; ++i)
if(b == m_bombes[i])
break;
if (i == m_bombes.size())
return;
delete m_bombes[i]; // ca plante ici
for(unsigned int j = i ; j < m_bombes.size() - 1 ; ++j)
m_bombes[j] = m_bombes[j + 1];
m_bombes.pop_back();
}
Je suis sur que la bombe a été créé dynamiquement, donc je peut appeler delete.
Par contre celui-ci est appelé par le thread qui dépend de cette même bombe.
Comment faire quelque chose de similaire, sans que le delete soit appelé dans le thread ?
Merci
Nico