2

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> &'
4

3 に答える 3

6

検索関数が const_iterator を返しています。呼び出し元がイテレータを介して見つかったアイテムを変更できるようにする場合は、同じ型、つまりstd::vector< CClass >::const_iteratorを返すか、 a にキャストする必要があります。std::vector< CClass >::iterator

編集:あなたの更新を見た後、問題はあなたのイテレータ(それ)があなたの関数の戻り値とは異なる型を持っているようです. それらは同じでなければなりません。

std::vector< CClass >::iterator it;
于 2008-11-24T12:23:26.807 に答える
0

const_iterators が混同されているようです。具体的には、イテレータをどのように宣言しているか、さらにコードを投稿してください。

于 2008-11-24T12:24:04.903 に答える
0

std::find_if() 関数も見てください。これを行う方がクリーンな方法かもしれません。

于 2008-11-24T14:59:52.750 に答える