-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 回答