Возврат Итератора - PullRequest
       10

Возврат Итератора

2 голосов
/ 24 ноября 2008

У меня есть функция, которая ищет контейнер 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> &'

Ответы [ 3 ]

6 голосов
/ 24 ноября 2008

Ваша функция поиска возвращает const_iterator. Вы должны либо вернуть тот же тип, то есть std::vector< CClass >::const_iterator, либо привести его к std::vector< CClass >::iterator, если вы хотите, чтобы вызывающая сторона могла изменять найденный элемент через итератор.

РЕДАКТИРОВАТЬ: после просмотра вашего обновления, похоже, проблема в том, что ваш итератор (он) имеет тип, отличный от возврата вашей функции. Они должны быть одинаковыми.

std::vector< CClass >::iterator it;
0 голосов
/ 24 ноября 2008

Вы также должны взглянуть на функцию std :: find_if (). Это может быть более чистый способ сделать это.

0 голосов
/ 24 ноября 2008

Звучит так, будто вы перепутали свои const_iterators. Пожалуйста, напишите больше кода, в частности, как вы объявляете свой итератор.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...