Le problème c'est qu'il y a pas beaucoup d'explication ni de code pour pouvoir t'aider.
je présume que fireboss est un std::vector<...> ?
Pourquoi ne pas passer directement par les itérateurs plutôt que d'utiliser des indices (si c'est bien un std::vector)?
Pour le premier problème je dirais que ca vient de la ligne i-- qu'il faut supprimer.
Premier tour de boucle i vaut 0 donc après le i-- il vaut -1. Au deuxième tour il vaudra donc 0 or fireboss[0] aura été supprimé dans le tour de boucle précédent. Enfin si je dit pas de bêtises.
personnellement je préfère cette écriture: (question de goût)
std::vector<...>::iterator it; // J'ai mis des ... entre les chevrons car je sais pas quel type d'objet tu utilises
// Mais a vu de nez c'est un pointeur vers un objet
for(it = fireboss.begin(); it != fireboss.end(); ++it)
{
if((*it)->IsDead())
{
delete (*it);
(*it) = NULL;
fireboss.erase(it);
}
else
{
(*it)->Movefire(5);
}
}
Pour le 2 eme bout de code pareil y a pas assez d'elements pour dire ce qui va pas.