has no member named 'pt'问题(已解决)

error: ‘__gnu_cxx::__alloc_traits<std::allocator<cv::Point_<float> > >::value_type {aka class cv::Point_<float>}’ has no member named ‘pt’
        point1.push_back(point1[GoodMatchePoints[i].queryIdx].pt);
                                                              ^
/home/ning/vscode/imagematch.cpp:63:62: error: ‘__gnu_cxx::__alloc_traits<std::allocator<cv::Point_<float> > >::value_type {aka class cv::Point_<float>}’ has no member named ‘pt’
        point2.push_back(point2[GoodMatchePoints[i].trainIdx].pt);

意思就是类没有成员变量XXA
实际上类是具有成员变量XX的
问题的原因在于工程中定义的变量和系统头文件定义的宏冲突所致:处理类定义之前,发现了同名的宏,导致在编译之前(预处理阶段)把类成员当作宏做了宏体的替换。

受上面解释的启发,猜想自己是不是对同一变量名称进行了两次定义

源代码


vector<Point2f> point1,point2;
    for(int i=0;i<GoodMatchePoints.size();i++)
  {
       point1.push_back(point1[GoodMatchePoints[i].queryIdx].pt);
       point2.push_back(point2[GoodMatchePoints[i].trainIdx].pt);
   } 

问题原因:
point1.push_back和point2.push_back后的point1和point2,是指将point1和point2 push到本身中去,此操作会出现如上问题。

解决方法:
应该将point1.push_back和point2.push_back后的point1和point2更改为keypoint1和keypoint2
修改后的代码为

vector<Point2f> point1,point2;
    for(int i=0;i<GoodMatchePoints.size();i++)
  {
       point1.push_back(picpoint1[GoodMatchePoints[i].queryIdx].pt);
       point2.push_back(picpoint2[GoodMatchePoints[i].trainIdx].pt);
   } 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值