我有一个函数,它搜索STL容器,然后在找到位置时返回迭代器,但是我收到一些有趣的错误消息,可以告诉我我做错了什么?
功能:
std::vector< CClass >::iterator CClass::SearchFunction( const std::string& strField )
{
...
return it;
...
}
错误:
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> &'
答案 0 :(得分:6)
您的搜索功能正在返回const_iterator。如果您希望调用者能够通过迭代器修改找到的项目,您应该返回相同的类型,即std::vector< CClass >::const_iterator
,或者将其转换为std::vector< CClass >::iterator
。
std::vector< CClass >::iterator it;
答案 1 :(得分:0)
听起来你的const_iterators已经混淆了。请发布更多代码,特别是如何声明迭代器。
答案 2 :(得分:0)
您还应该查看std :: find_if()函数。这可能是一种更清洁的方式。