在我的应用程序中,我将所有当前打开的窗口存储在一个向量中,以便进行事件处理。打开窗口时,它会添加到矢量中并在关闭时删除。我有一个进程事件函数,我遍历该向量并使用当前事件更新所有窗口:
for(Window* w : windows)
w->OnWindowEvent(event);
但是,如果我关闭窗口,我会收到错误' Debug Assertion failed:vector iterator not incrementable'。根据我的理解,如果当前的迭代器无效,例如像擦除元素时,这是我在这里和其他网站上阅读的内容。但我不是在这里做的。另一件奇怪的事情是,如果我使用传统的'像这样的循环:
for(int i = 0; i < windows.size(); i++)
windows[i]->OnWindowEvent(event);
然后我可以直接使用相同的基于范围的循环而没有任何错误。 我错过了什么吗?