イベントとウィンドウの処理にSDLを使用していますが、forループで複数の要素を消去しているように見えません。私は2つの要素を持っており、削除キーを押すと "Testing"が2回印刷されます。しかし、両方の要素が "選択"されると(bool)、最初の要素だけが削除され、2番目の要素は削除されません。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とは何の関係もなく、コレクションとイテレータの仕組みに関係しています。 –