C++ 访问boost::geometry多边形中的点数据时出错

C++ 访问boost::geometry多边形中的点数据时出错,c++,boost,boost-geometry,C++,Boost,Boost Geometry,我正在尝试迭代boost多边形中的点,以便对它们执行操作。要显示问题的简化版本,请执行以下操作: #include <boost/geometry.hpp> #include <boost/geometry/geometries/point_xy.hpp> typedef boost::geometry::model::d2::point_xy<double> point_type; typedef boost::geometry::model::polyg

我正在尝试迭代boost多边形中的点,以便对它们执行操作。要显示问题的简化版本,请执行以下操作:

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>

typedef boost::geometry::model::d2::point_xy<double> point_type;
typedef boost::geometry::model::polygon<point_type> polygon;

int main()
{
    polygon polygonTest;
    boost::geometry::read_wkt("POLYGON((-2 2, 2 2, 2 -2, -2 -2, -2 2))", polygonTest);

    for (point_type point : boost::geometry::exterior_ring(polygonTest))
    {
        double xCoord = point.x;
    }


    return 0;
}
#包括
#包括
typedef boost::geometry::model::d2::point\u xy point\u type;
typedef boost::geometry::model::polygon;
int main()
{
多边形多元素测试;
几何体:read_wkt(“多边形(-22,22,2-2,-2-2,-2 2))”,多边形测试;
用于(点\类型点:升压::几何体::外部\环(多边形测试))
{
双xCoord=点x;
}
返回0;
}
我收到以下错误:

'boost::geometry::model::d2::point_xy<double,boost::geometry::cs::cartesian>::x': function call missing argument list; use '&boost::geometry::model::d2::point_xy<double,boost::geometry::cs::cartesian>::x' to create a pointer to member
“boost::geometry::model::d2::point_xy::x”:函数调用缺少参数列表;使用“&boost::geometry::model::d2::point_xy::x”创建指向成员的指针
我忽略了什么来解决这个问题?

您正在使用一个成员函数
x
。但你忘了叫它:

    double xCoord = point.x();
有关工作样本,请参见下文

Q.我忽略了什么

您忽略了错误消息中的信息

  • GCC:
    错误:无法基于转换为类型“double”来解析重载函数“x”

    它告诉你,你正在给一个双精度函数分配一个函数
    x

  • 叮当声:
    错误:必须调用对非静态成员函数的引用;您的意思是不带参数地调用它吗?

    它甚至还列出了您可能需要的重载

#include <boost/geometry.hpp>
#include <boost/geometry/geometries/point_xy.hpp>

typedef boost::geometry::model::d2::point_xy<double> point_type;
typedef boost::geometry::model::polygon<point_type> polygon;

int main() {
    polygon polygonTest;
    boost::geometry::read_wkt("POLYGON((-2 2, 2 2, 2 -2, -2 -2, -2 2))", polygonTest);

    for (point_type point : boost::geometry::exterior_ring(polygonTest)) {
        double xCoord = point.x();
    }
}
#包括
#包括
typedef boost::geometry::model::d2::point\u xy point\u type;
typedef boost::geometry::model::polygon;
int main(){
多边形多元素测试;
几何体:read_wkt(“多边形(-22,22,2-2,-2-2,-2 2))”,多边形测试;
用于(点\类型点:升压::几何体::外部\环(多边形测试)){
double xCoord=point.x();
}
}

Ugh。谢谢我觉得这是个愚蠢的疏忽。我使用的是VS,所以这些错误没有显示出来。只有上面的消息。@JayDoe。。。呃,是的,事实上,这和叮当声一样清楚:)