您好,我正在尝试访问包含一堆类对象的向量元素,并从向量中仅删除其中一个对象。
问题是我不懂向量,我在网上找不到任何有用的信息。
我的代码:
void MyExperiment::deselectSingle() {
Ogre::Vector3 vNewPos = mPickedObj->_getDerivedPosition();
mPickedObj->showBoundingBox( false );
mMoveThis->removeChild( mPickedObj->getName() );
mSceneMgr->getRootSceneNode()->addChild( mPickedObj );
mPickedObj->_setDerivedPosition( vNewPos );
for ( Ogre::SceneNode* it = vObjects.begin(); it < vObjects.end(); it++ ) {
static std::string objNameStr;
objNameStr = vObjects.at( *it )->getName();
if ( objNameStr == mPickedObj->getName() )
{
vObjects.erase( *it );
break;
}
}
if ( mMoveThis->numAttachedObjects() == 0 ) bSelected = false;
return;
}
我知道这段代码行不通。我已经在网上阅读了一些关于如何使用迭代器的内容,但是当我尝试一些建议的错误时,就会出现错误。事实上,我在这里所拥有的会导致一些错误。
我对这个函数的计划是遍历包含 Ogre::SceneNode 指针元素的 vObjects 向量。如果其中一个元素与 mPickedObj 的名称匹配,那么我想通过 .erase() foo 将其从向量中删除。上面的代码不起作用,它只是作为一个例子,尽管它是我在我的应用程序中尝试的。