-1

これらの反復子の質問は何千回も尋ねられ、回答されていることは知っていますが、次のコードをコンパイルすると、まだこのエラーが発生します。

エラー C2440: '初期化中': 'std::_Vector_iterator<_Myvec>' から 'cv::Vector<_Tp> *' に変換できません

.

void iterate(vector<vector<cv::Point> >& contours){
  Vector<Vector<cv::Point>>::iterator it = contours.begin();
  for( int i = 0; i< contours.size(); i++ ){
    if(contourArea(contours[i])>1000){
        it++;
    }else{
        contours.erase(it);
    }
}
}

このコードに問題はありません。新しい反復子のベクトルのテンプレート型は、反復子を取得しているベクトルと同じです。

4

1 に答える 1

0

変換できないエラーは、一般的に非常に文字通りです。多くの場合、使用されている型から、コードのどこが間違っているかのヒントが得られます。

ここでは、イテレータを定義するために大文字クラスを使用しており、それに小文字クラスをVector割り当てています。Vector

Vector が実際のクラスでない場合は、おそらく別のエラーが発生することに注意してください。

于 2013-10-09T19:12:32.207 に答える