gdb:找不到运算符[]

时间:2014-05-13 23:07:02

标签: c++ gdb codeblocks watch

我正在开发代码块,我有以下内容:

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向量的值?

2 个答案:

答案 0 :(得分:0)

似乎结构T1 operator[](T2 smth) {...}中未定义plineXD_t,但您尝试访问它。

如果您显示所有参与结构的完整代码

会更好

答案 1 :(得分:0)

不确定您的函数findIntersectionData(trackedBlob,origRoads [i])是否实际返回了一个向量,因为您还没有显示完整的代码。但是,对于矢量,您应该只需使用at()成员函数即可读取值。