void World::Update() { //update all game objects- sometimes they want to die, so we need to tread carefully... for( int i = 0, c = mGameObjects.size(); i < c; ++i ) { GameObjectPtr go = mGameObjects[ i ]; if( !go->DoesWantToDie() ) { go->Update(); } //you might suddenly want to die after your update, so check again if( go->DoesWantToDie() ) { RemoveGameObject( go ); go->HandleDying(); --i; --c; } } }