我在MFC的InitialUpdate中有如下代码:
void CWindow3D::OnInitialUpdate()
{
CView::OnInitialUpdate();
mOSG->InitOSG( _T("cow.osg") );
root = new osg::Group();
m_model.InitModel( root.get() );
osgUtil::Optimizer optimizer;
optimizer.optimize(root.get());
osgViewer::Viewer * viewer = mOSG->getViewer();
viewer->setSceneData(root.get());
viewer->addEventHandler(new osgUserDragger::osgUserPickDragHandler(root.get()));
mThreadHandle = (HANDLE)_beginthread( &cOSG::Render, 0, mOSG );
}
之后我在一个DLL中读取数据并将这些数据加载到root中,root作为一个成员变量传给了DLL,在root下加载了子节点。
void CWindow3D::OnAddData()
{
m_model.CreateStickersFromFile( "Fault_6_pl1_XY" );
m_model.CreateStickersFromFile( "Fault_6_pl2_XY" );
m_model.CreateStickersFromFile( "Fault_6_pl3_XY" );
m_model.CreateStickersFromFile( "Fault_6_pl4_XY" );
}
其中m_model为一个管理对象,里面有一个root指针,CreateStickersFromFile将创建一个Geode对象,添加到root之下。
问题:当运行时,加载对象有时就会崩溃,不时每次都崩溃。提示信息是vector iterator not incrementable.
拜托哪位大神帮帮忙搞定一下。
------解决思路----------------------
错误看上去是vector的迭代器操作不对