1
我正在處理一個程序,該程序應該將每個窗口放入列表中,調整其大小,並根據指定的佈局將其移動到屏幕位置。調試斷言錯誤 - 列表迭代器不兼容
當我運行這個函數但是我得到一個調試斷言錯誤說「列表迭代器不兼容」。
下面是代碼:
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()'請發佈此功能。這個函數的返回值類型可能是原因。 – PaulMcKenzie
使用調試器查找此代碼的哪一行是斷言的原因,這將有很大幫助。 –
這裏是我的意思在我的意見:請在這個答案中替換'std :: vector'與'std :: list':http://stackoverflow.com/questions/30041907/can-i-use-nested-loops -with-vectors-in-cpp/30042185#30042185 - 這有幫助嗎? – PaulMcKenzie