Я занимаюсь разработкой кодовых блоков, и у меня есть следующее:
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?
Кажется что реально T1 operator[](T2 smth) {...}
не определен в структуре plineXD_t
но вы пытаетесь получить к нему доступ.
Было бы лучше, если бы вы показали весь код всех участвующих структур
Не уверен, что ваша функция findIntersectionData (trackedBlob, origRoads [i]) действительно возвращает вектор, так как вы еще не показали полный код. Однако для вектора вы должны быть в состоянии прочитать значение просто с помощью функции-члена at ().