2013-07-11 3 views
0

У меня есть вопрос о C++. Я работаю с OpenCV. Я довольно новичок в обоих.<Object> не является членом <struct>

У меня это заявление:

struct scoredRotatedRect 
{ 
    double score; 
    RotatedRect ellipse; 
    vector<Point> contour; 

}; 

Проблема заключается в том, что, когда я объявляю scoredRotatedRect, он признает double в качестве члена, но не в непримитивные типов в качестве членов.

есть,

cur_scoredRotatedRect.score=0; // not a problem 
cur_scoredRotatedRect.ellipse=a_RotatedRect; // get an error 

Ошибка

" 'Эллипс': не является членом 'scoredRotatedRect'".

Что вызывает это?

+0

-1: Пожалуйста, предоставьте SSCCE. Кроме того, если ответ, который вы предлагаете устранить, то «ellipse»: не является членом «scoreRotatedRec», не был бы ошибкой компилятора * first *. Первая (основная) проблема заключалась бы в том, что «вектор» был неизвестен. –

ответ

0

Проблема оказалась в том, что я делаю это:

struct scoredRotatedRect 
{ 
    double score; 
    RotatedRect ellipse; 
    vector<Point> contour; 

}; 

using namespace std; 
using namespace cv; 

в противоположность этому:

using namespace std; 
using namespace cv; 

struct scoredRotatedRect 
{ 
    double score; 
    RotatedRect ellipse; 
    vector<Point> contour; 

}; 

так что я предполагаю, что первоначальное объявление структура не знал, что имел в виду RotatedRect (и т.д.)

+3

Это не имеет большого смысла. Если объявление «RotatedRect» не отображается, компилятор должен жаловаться, когда видит «RotatedRect ellipse;», а не позже, когда видит ссылку на него. –

+0

Это странно. Это изменение фиксировало это? Потому что, если он не понимает, что такое 'RotatedRect', компилятор должен был дать вам сообщение об ошибке в строке' RotateRect ellipse; '... как« непризнанный символ »или что-то подобное. –

+1

Лучше всего просто использовать оба 'использования' и явно квалифицировать их. – chris

Смежные вопросы