итератор двухсторонней очереди OGRE

Хорошо, у меня есть следующий код:

for(deque<Ogre::Vector3>::iterator iter(mWalkList.begin()); iter != mWalkList.end() ;  iter++){
            String tmpstr="Knot"+Ogre::StringConverter::toString(n);
            ent = mSceneMgr->createEntity(tmpstr, "knot.mesh");
            tmpstr = "Knot"+Ogre::StringConverter::toString(n)+"Node";
            node = mSceneMgr->getRootSceneNode()->createChildSceneNode(tmpstr,*iter);
            node->attachObject(ent);
            node->setScale(0.1f, 0.1f, 0.1f);
            n++;
        }  

Но визуальная студия выдает мне ошибку, когда я навожу курсор iterator iter, который говорит следующее: Error: class "Ogre::deque<Ogre::Vector3, Ogre::STLAllocator<Ogre::Vector3, Ogre::GeneralAllocPolicy>>" has no member 'iterator'

Что я делаю не так,

извините, я новичок в Ogre и C ++, если на то пошло, это школьный проект, поэтому я был бы очень признателен за помощь.


person sn0ep    schedule 13.09.2011    source источник


Ответы (1)


Попробуйте использовать std::deque<Ogre::Vector3> вместо deque<Ogre::Vector3> (в данном случае это Ogre::deque<Ogre::Vector3>).

Или вы можете использовать Ogre::deque<Ogre::Vector3>::type. Документы, похоже, говорят, что это то же самое, что и std::deque выше.

person Chris Jester-Young    schedule 13.09.2011
comment
спасибо, это помогает... На самом деле странно, почему мой учитель дал мне этот код.. Хотя он даже не работает: S - person sn0ep; 13.09.2011
comment
Ваша ошибка была очень тонкой. Я думаю, что многие (если не большинство) программисты не поняли бы, что в этом коде есть ошибка, пока не попытались бы его скомпилировать. Ошибка связана с поиском имени в зависимости от аргумента (en.wikipedia.org/wiki/Argument- depend_name_lookup), который я бы рассматривал как продвинутую тему в C++. - person Emile Cormier; 13.09.2011
comment
Этого можно избежать, если вы не используете using std и имеете привычку ставить префикс std::. - person Mooing Duck; 13.09.2011