2012-04-30 4 views
0

je ce qui compile bien dans VC++ 6,0ne peut pas convertir le paramètre

typedef std::vector<ILBCOM_FieldStruct*> FieldsVector; 
FieldsVector m_coll; 
FieldsVector::iterator it(&m_coll[Index-1]); 
m_coll.erase(it); 

je compiler dans Visual Studio C++ 2010

Le message d'erreur est sur la 3ème ligne:

erreur C2664: 'std :: _ Vector_iterator < _Myvec> :: _ Vector_iterator (const std :: _ Vector_iterator < _Myvec> &)': impossible de convertir le paramètre 1 'ILBCOM_FieldStruct **' à 'const std :: _ Vector_iterator < _Myvec> &'

Voyez-vous quelque chose de mal?

+0

Essayez d'avoir un oeil à http://stackoverflow.com/questions/8848875/vc-vector-iterator-initialization – sonicwave

Répondre

4

std::vector<T>::iterator n'a pas de constructeur qui convertit à partir de T*. Il fait ont un constructeur de copie:

FieldsVector::iterator it(m_coll.begin()+Index-1); 
+0

Merci cela fonctionne. – michaelhsilva9944

+2

Pour être clair, dans VC++ 6, 'std :: vector :: iterator' était simplement' T * '; depuis lors, c'est une classe d'itérateur correcte à la place. – ildjarn

Questions connexes