Я посмотрел несколько примеров и, насколько я могу судить, я правильно использую метод соединения.Однако, когда я запускаю программу в режиме отладки под Visual C ++, стек вызовов показывает, что мой вызов сплайсинга в конечном итоге достигает этой строки, где происходит сбой:
_Mynextiter = _Parent_proxy->_Myfirstiter;
Код:
for(std::list<Rect>::iterator i = rects.begin(); i != rects.end();)
{
if(i->isOverlapping(newRect))
{
Rect oldRect = (*i);
i = rects.erase(i);
std::list<Rect> & lr = oldRect.split(newRect);
//doesn't work either
//rects.splice(rects.begin(), lr, lr.begin(), lr.end());
rects.splice(rects.begin(), lr);
}
else i++;
}