Я использую SDL для обработки событий и окон, однако я не могу стереть несколько элементов в цикле for. У меня есть два элемента, и он дважды выдает «Тестирование» при ударе ключа - отлично! Однако, когда оба элемента «выбраны» (bool), он удаляет только первый элемент, а не второй.Невозможно стереть несколько элементов внутри событий опроса SDL
Эта функция вызывается в цикле опроса События SDL в:
static inline void tickEditorKeyFunctions(CBevent e)
{
if (e.type == SDL_KEYDOWN)
{
switch (e.key.keysym.sym)
{
case SDLK_w:
break;
case SDLK_s:
break;
case SDLK_a:
break;
case SDLK_d:
break;
case SDLK_LCTRL:
break;
case SDLK_LSHIFT:
break;
case SDLK_DELETE:
for (CBuint i = 0; i < _scene->static_meshes.size(); i++)
{
if (_scene->static_meshes[i]->_picked)
_scene->static_meshes.erase(_scene->static_meshes.begin() + i);
std::cout << "Testing" << std::endl;
}
_pick_list.clear();
break;
default:
break;
}
}
}
Кто-нибудь знает, почему это происходит?
Спасибо.
Вы пробовали чистой и восстановить? Ваш цикл 'for' выглядит отлично ... – Jesse
Да, у меня есть. Я думаю, что это как-то связано с системой обратного вызова событий SDL:/ – William
@William это не связано с SDL, и все зависит от того, как работают коллекции и итераторы. –