我有一个函数,它搜索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)
您的搜索功能正在返回const_iterator.如果您希望调用者能够通过迭代器修改找到的项,则应该返回相同的类型,即std::vector< CClass >::const_iterator或将其强制转换为a std::vector< CClass >::iterator.
编辑:看到你的更新后,似乎问题是你的迭代器(它)有一个不同于你的函数返回的类型.它们应该是一样的.
std::vector< CClass >::iterator it;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10506 次 |
| 最近记录: |