GDB: не удалось найти оператор []

Я занимаюсь разработкой кодовых блоков, и у меня есть следующее:

struct intersectionData_t
{
unsigned int idxOfBlob;
unsigned int idxOfRoad;
ofPoint xPt; //interesection (cross) point
};

typedef vector<intersectionData_t> plineXD_t;

vector<plineXD_t> plinesXData;

в основном, каждая ломаная имеет вектор пересечений, зарегистрированных в plineXD_t, затем plinesXData это просто вектор всех полилиний.

в моей реализации:

plineXD_t xData = findIntersectionData( trackedBlob , origRoads[i] );
if ( !xData.empty() )
plinesXData.push_back( xData );

Я получаю некоторые странные значения от plinesXData[i] позже в коде, поэтому я пытаюсь увидеть, что генерируется здесь, в xData,

когда часы в кодовых блоках возвращаются xData[0] : Could not find operator[].
То же самое, если я попробую plinesXData [i] [0].

РЕДАКТИРОВАТЬ: xData.size() не возвращает число (поле наблюдения пусто).

EDIT2: findInterestionData заполняет вектор intersectionData_t всеми точками пересечения xPt найдено между 2 полилиниями. Он также хранит индексы idxOfRoad & idxOfBlob точек непосредственно перед пересечением для каждой ломаной линии для быстрого доступа.

path::plineXD_t path::findIntersectionData( \
const ofPolyline& trackedBlob , const ofPolyline& road)
{
plineXD_t xD;

//for all line segments of path...
for (unsigned int i = 0 ; i < road.size()-1 ; i++)
{
//...test all line segs of trackedBlob for intersections
for (unsigned int j = 0 ; j < trackedBlob.size()-1 ; j++)
{
ofPoint intersectionPoint = ofPoint(0,0);

if (ofLineSegmentIntersection(road[i] , road[i+1] , trackedBlob[j] , trackedBlob[j+1] , intersectionPoint ))
{
struct intersectionData_t id;
id.idxOfRoad = i;
id.idxOfBlob = j;
id.xPt = intersectionPoint;

xD.push_back( id );
}
}
}

return xD;
}

что это ? как я могу увидеть значения вектора xData?

0

Решение

Кажется что реально T1 operator[](T2 smth) {...} не определен в структуре plineXD_t но вы пытаетесь получить к нему доступ.

Было бы лучше, если бы вы показали весь код всех участвующих структур

0

Другие решения

Не уверен, что ваша функция findIntersectionData (trackedBlob, origRoads [i]) действительно возвращает вектор, так как вы еще не показали полный код. Однако для вектора вы должны быть в состоянии прочитать значение просто с помощью функции-члена at ().

0

По вопросам рекламы [email protected]