De retour d'un Itérateur
J'ai une fonction qui recherche un conteneur STL puis renvoie l'itérateur quand il trouve la position, mais je suis arriver de drôles de messages d'erreur, pouvez me dire ce que je fais de mal?
Fonction:
std::vector< CClass >::iterator CClass::SearchFunction( const std::string& strField )
{
...
return it;
...
}
Erreur:
error C2664: 'std::_Vector_iterator<_Ty,_Alloc>::_Vector_iterator(const std::_Vector_iterator<_Ty,_Alloc> &)' : cannot convert parameter 1 from 'std::_Vector_const_iterator<_Ty,_Alloc> *__w64 ' to 'const std::_Vector_iterator<_Ty,_Alloc> &'
Vous devez vous connecter pour publier un commentaire.
Votre recherche en fonction retourne un const_iterator. Vous devez renvoyer le même type, c'est à dire
std::vector< CClass >::const_iterator
, ou la convertir en unestd::vector< CClass >::iterator
si vous avez l'intention de l'appelant afin d'être en mesure de modifier l'élément trouvé par le biais de l'itérateur.EDIT: après avoir vu votre mise à jour, il semble que le problème est votre itérateur (elle) a un type différent de votre retour de la fonction. Ils devraient être les mêmes.
Semble que vous avez votre const_iterators mélangés. Merci de poster plus de code, plus précisément la façon dont vous devez déclarer votre itérateur.
Vous devriez aussi regarder à std::find_if() fonction. Il peut être d'une façon plus propre de le faire.