读书人

双向迭代器崩溃解决方法

发布时间: 2012-12-14 10:33:07 作者: rapoo

双向迭代器崩溃

void CChildFrame::OnPreview()
{
// TODO: 在此添加命令处理程序代码

if(g_vHandel.size()<=1)
return;
if(g_vHandel[0]==GetSafeHwnd())
return;

CTestView* pCurrView=(CTestView*)GetActiveView();
ASSERT(pCurrView);
CTestDoc* pTestDoc=pCurrView->GetDocument();
ASSERT(pTestDoc);
POSITION pos=pTestDoc->GetFirstViewPosition();
CTestView* pNextView;
pNextView=(CTestView*)pTestDoc->GetNextView(pos);

vector<HWND>::iterator iter=g_vHandel.begin();

while(pNextView)
{
vector<HWND>::iterator iter2=iter;

//std::advance(iter2,-1);

iter2--; //这里崩溃

if(pNextView->GetSafeHwnd()==*iter2)
{
break;
}

pNextView=(CTestView*)pTestDoc->GetNextView(pos);
++iter;
}


if(pNextView==NULL)
return;
SetActiveView(pNextView);

}




[解决办法]
while(pNextView != g_vHande.end())

读书人网 >C++

热点推荐