pas de match pour l'opérateur= à l'aide d'un std::vector

J'ai une classe déclarée comme ceci:

class Level
{
    private:
        std::vector<mapObject::MapObject> features;
    (...)
};

et dans l'une de ses fonctions de membre j'essaie de parcourir ce vecteur comme ceci:

vector<mapObject::MapObject::iterator it;
for(it=features.begin(); it<features.end(); it++)
{
    /* loop code */
}

Cela semble simple pour moi, mais g++ me donne cette erreur:


src/Level.cpp:402: error: no match for ‘operator=’ in ‘it = ((const yarl::level::Level*)this)->yarl::level::Level::features.std::vector<_Tp, _Alloc>::begin [with _Tp = yarl::mapObject::MapObject, _Alloc = std::allocator<yarl::mapObject::MapObject>]()’

/usr/include/c++/4.4/bits/stl_iterator.h:669: remarque: les candidats sont: __gnu_cxx::__normal_iterator<yarl::mapObject::MapObject*,std::vector > >& __gnu_cxx::__normal_iterator<yarl::mapObject::MapObject*,std::vector > >::operator=(const __gnu_cxx::__normal_iterator<yarl::mapObject::MapObject*, ``std::vector<yarl::mapObject::MapObject, std::allocator<yarl::mapObject::MapObject> > >&)

Ce que quelqu'un sait pourquoi ce qui se passe?

Tu veux dire vector<mapObject::MapObject>::iterator it;? Vous avez manqué un crochet ici.
C++de messages d'erreur ressembler à vomir mixte avec plus de vomir et soigneusement placés dans les crochets.
Je n'ai pas utiliser g++ sur une base régulière, mais d'autres compilateurs (à savoir Visual C++ et Intel C++ qui utilise la GDE frontend) ont modèle des messages d'erreur bien plus facile à lire que celui de l'OMI.

OriginalL'auteur Max | 2010-06-14