gdb:找不到操作符[]

gdb: Could not find operator[]

本文关键字:操作符 找不到 gdb      更新时间:2023-10-16

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

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()不返回数字(watch字段为空)。

EDIT2: findintertiondata用2条折线之间的所有交点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向量的值?

似乎真的T1 operator[](T2 smth) {...}没有在结构plineXD_t中定义,但您试图访问它。

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

不确定你的函数findIntersectionData(trackedBlob, origRoads[i])实际上返回一个矢量,因为你没有显示完整的代码。然而,对于一个向量,你应该能够简单地通过使用at()成员函数来读取值。