我正在开发代码块,我有以下内容:
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
中查看此处生成的内容。
当codeblocks中的监视返回xData[0] : Could not find operator[].
时
如果我尝试plinesXData [i] [0]。
编辑:xData.size()
不返回数字(监视字段为空)。
EDIT2:findInterestionData用两条折线之间的所有交点xPt
填充矢量intersectionData_t。它还存储每个折线的交叉点之前的点的索引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 :(得分:0)
似乎结构T1 operator[](T2 smth) {...}
中未定义plineXD_t
,但您尝试访问它。
如果您显示所有参与结构的完整代码
会更好答案 1 :(得分:0)
不确定您的函数findIntersectionData(trackedBlob,origRoads [i])是否实际返回了一个向量,因为您还没有显示完整的代码。但是,对于矢量,您应该只需使用at()成员函数即可读取值。