返回迭代器

Kon*_*rad 2 c++ iterator stl

我有一个函数,它搜索STL容器然后在找到位置时返回迭代器,但是我得到一些有趣的错误消息,可以告诉我我做错了什么?

功能:

std::vector< CClass >::iterator CClass::SearchFunction( const std::string& strField )
{
...

   return it;

...
}
Run Code Online (Sandbox Code Playgroud)

错误:

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> &'
Run Code Online (Sandbox Code Playgroud)

Fer*_*cio 6

您的搜索功能正在返回const_iterator.如果您希望调用者能够通过迭代器修改找到的项,则应该返回相同的类型,即std::vector< CClass >::const_iterator或将其强制转换为a std::vector< CClass >::iterator.

编辑:看到你的更新后,似乎问题是你的迭代器(它)有一个不同于你的函数返回的类型.它们应该是一样的.

std::vector< CClass >::iterator it;
Run Code Online (Sandbox Code Playgroud)