After thinking I was beginning to get the hang of everything, I have come up stuck again. I have hit this problem before where I iterate around a vector and after some collision detection decide whether to delete it or not.
When one of the bullets hit the boss, the game crashes and exits with a code 3.
What confuses me is that this method works well for other places in the game where I need to delete the bullets so where am I going wrong? I know that I am dereferencing incorrectly but just cannot see why here.
for (std::vector<boss>::iterator bossIT = boss1.begin(); bossIT != boss1.end(); bossIT++)
{
(*bossIT).move(spaceShip1.xPosition(), spaceShip1.yPosition()); // Moves the boss
for (std::vector<bullet>::iterator bulletIT = aBullet.begin(); bulletIT != aBullet.end(); bulletIT++) // Loops around each bullet
{
if((*bossIT).xPosition() + 32 >= (*bulletIT).xPosition() && (*bossIT).xPosition() <= (*bulletIT).xPosition() + 10 && // Detects Collision
(*bossIT).yPosition() + 32 >= (*bulletIT).yPosition() && (*bossIT).yPosition() <= (*bulletIT).yPosition() + 10)
{
aBullet.erase(aBullet.begin()+bulletIterator); // Crashes here with code 3
(*bossIT).hit();
}
}
}
Any help would be greatly appreciated. Thanks






