【发布时间】:2016-01-17 19:52:29
【问题描述】:
我正在开发一个程序,它应该将每个窗口放在一个列表中,调整它的大小,然后根据指定的布局将它移动到屏幕位置。
当我运行这个函数时,我得到一个调试断言错误,说“列表迭代器不兼容”。
代码如下:
void Control::checkForNewWindows()
{
for (std::list<Window>::iterator i = mainDetector.getWindowList().begin(); i != mainDetector.getWindowList().end(); ++i)
{
bool forBreak = false;
if ((i->getTitle().find("sample_title") != std::string::npos) && (i->getState() == false))
{
for (int y = 0; y < 3; y++)
{
for (int x = 0; x < 4; x++)
{
if (activeLayout.windowLayout[y][x].getHandle() == 0)
{
moveWindow(*i, activeLayout.dimensionsLayout[y][x].x, activeLayout.dimensionsLayout[y][x].y, activeLayout.dimensionsLayout[y][x].width,
activeLayout.dimensionsLayout[y][x].height);
activeLayout.windowLayout[y][x] = *i;
activeLayout.windowLayout[y][x].setState(true);
forBreak = true;
}
if (forBreak)
{
break;
}
}
if (forBreak)
{
break;
}
}
}
}
}
在第一个for循环时出现错误,希望有人能帮我解决这个问题
编辑:
这里是getWindowList函数:
std::list <Window> Detector::getWindowList()
{
return windowList;
}
和windowList定义:
std::list <Window> windowList;
【问题讨论】:
-
getWindowList()请发布此功能。这个函数的返回值类型可能是原因。 -
使用调试器找出这段代码的哪一行是断言的原因,这将有很大帮助。
-
这就是我在评论中的意思:请在此答案中将
std::vector替换为std::list:stackoverflow.com/questions/30041907/…——这有帮助吗? -
谢谢,您提供的链接解决了它,必须将 std::list
Detector::getWindowList() 更改为 std::list & Detector::getWindowList()跨度>
标签: c++ list debugging for-loop syntax-error