У меня есть два фрагмента исходного кода, первый компилируется нормально, а второй выдает типичную ошибку «не удалось решить». Вероятно, важно отметить, что я разрабатываю код opencv C ++ в eclipse для своего проекта Android, используя проект OpenCV4Android, который значительно усложняет работу Eclipse.
Код, который компилирует без проблем:
std::vector< vector<DMatch> > matches;
std::vector<KeyPoint> keypoints_desired;
std::vector<Point2f> obj;
std::vector<Point2f> scene;
DMatch tmpObj;
KeyPoint tmpKey;
KeyPoint tmpOth;
for( int i = 0; i < matches.size(); i++ ){
tmpObj=matches[i][0];
tmpKey=keypoints_desired[tmpObj.queryIdx];
tmpOth=keypoints_desired[tmpObj.trainIdx];
obj.push_back( tmpKey.pt );
scene.push_back( tmpOth.pt );
}
Код, который выдает ошибки
Поле ‘queryIdx’ не может быть разрешено (наряду с ошибками, которые распространяются из этого)
std::vector< vector<DMatch> > matches;
std::vector<KeyPoint> keypoints_desired;
std::vector<Point2f> obj;
std::vector<Point2f> scene;
for( int i = 0; i < matches.size(); i++ )
{
obj.push_back( keypoints_desired[ matches[i][0].queryIdx ].pt );
scene.push_back( keypoints_scene[ matches[i][0].trainIdx ].pt );
}
Как видите, первый фрагмент кода идентичен второму функционально, он просто берет объекты и временно сохраняет их для доступа к полям. Я предполагаю, что это какая-то проблема с тем, как Eclipse пытается рекурсивно выполнять разрешение имен. Наряду с тем, как много кода для этих проектов хранится в другом проекте в рабочей области eclipse.
Это достойно сообщения об ошибке или я просто глуп? Я не вижу каких-либо явных ошибок, но, возможно, я неправильно использую что-то простое, я буду признателен за помощь.
Задача ещё не решена.
Других решений пока нет …