首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么这段Boost R-tree代码不能编译?

为什么这段Boost R-tree代码不能编译?
EN

Stack Overflow用户
提问于 2016-07-22 02:57:13
回答 1查看 324关注 0票数 0

我使用的是boost 1.61

使用VS2015编译

下面的代码不能编译。它应该做的-我认为是适配器BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET的使用让事情变得不愉快。

你知道为什么这个不起作用或者我怎么解决它吗?

代码语言:javascript
复制
#include <boost/geometry/geometry.hpp>
#include <boost/geometry/index/rtree.hpp>
#include <boost/geometry/geometries/polygon.hpp>
#include <boost/geometry/geometries/point.hpp>
#include <boost/geometry/io/wkt/wkt.hpp>
#include <vector>
#include <boost/geometry/geometries/register/point.hpp>

class wxPoint
{
public:
    wxPoint(double x, double y)
        : m_x(x),
          m_y(y)
    {
    }

    wxPoint() {}

    double  getx() const
    {
        return m_x;
    }
    double gety() const
    {
        return m_y;
    }
    void setx(double in)
    {
        m_x = in;
    }
    void sety(double in)
    {
        m_y = in;
    }
private:
    double m_x;
    double m_y;
};

BOOST_GEOMETRY_REGISTER_POINT_2D_GET_SET(
    wxPoint,
    double,
    boost::geometry::cs::geographic<boost::geometry::degree>,
    wxPoint::getx,
    wxPoint::gety,
    wxPoint::setx,
    wxPoint::sety)


typedef std::pair<wxPoint, unsigned> value;


int main()
{

    boost::geometry::index::rtree< value, boost::geometry::index::quadratic<16> > rtree;

    wxPoint p(4, 1);

    rtree.insert(std::make_pair(p, 1));

    std::vector<value> result_s;

    typedef boost::geometry::model::polygon<wxPoint> polygon_type;

    polygon_type poly;
    boost::geometry::read_wkt(
        "POLYGON((2 1.3,2.4 1.7,2.8 1.8,3.4 1.2,3.7 1.6,3.4 2,4.1 3,5.3 2.6,5.4 1.2,4.9 0.8,2.9 0.7,2 1.3)"
        "(4.0 2.0, 4.2 1.4, 4.8 1.9, 4.4 2.2, 4.0 2.0))", poly);

    rtree.query(boost::geometry::index::within(poly), std::back_inserter(result_s));

    return 0;
}

以下是来自VC编译器的摘要信息:

代码语言:javascript
复制
Severity    Code    Description Project File    Line    Suppression State
Error   C2672   'boost::geometry::strategy::intersection::relate_cartesian_segments<boost::geometry::policies::relate::segments_tupled<boost::geometry::policies::relate::segments_intersection_points<boost::geometry::segment_intersection_points<IntersectionPoint,boost::geometry::segment_ratio<double>>>,boost::geometry::policies::relate::segments_direction>,CalculationType>::apply': no matching overloaded function found   scratch1    c:\users\simon\downloads\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\detail\overlay\get_turn_info_helpers.hpp   230 
Error   C2782   'boost::tuples::tuple<boost::geometry::segment_intersection_points<IntersectionPoint,boost::geometry::segment_ratio<double>>,boost::geometry::policies::relate::segments_direction::return_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type> boost::geometry::strategy::intersection::relate_cartesian_segments<boost::geometry::policies::relate::segments_tupled<boost::geometry::policies::relate::segments_intersection_points<boost::geometry::segment_intersection_points<IntersectionPoint,boost::geometry::segment_ratio<double>>>,boost::geometry::policies::relate::segments_direction>,CalculationType>::apply(const Segment1 &,const Segment2 &,const RobustPolicy &,const RobustPoint &,const RobustPoint &,const RobustPoint &,const RobustPoint &)': template parameter 'RobustPoint' is ambiguous   scratch1    c:\users\simon\downloads\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\detail\overlay\get_turn_info_helpers.hpp   230 
Error   C2784   'boost::tuples::tuple<boost::geometry::segment_intersection_points<IntersectionPoint,boost::geometry::segment_ratio<double>>,boost::geometry::policies::relate::segments_direction::return_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type> boost::geometry::strategy::intersection::relate_cartesian_segments<boost::geometry::policies::relate::segments_tupled<boost::geometry::policies::relate::segments_intersection_points<boost::geometry::segment_intersection_points<IntersectionPoint,boost::geometry::segment_ratio<double>>>,boost::geometry::policies::relate::segments_direction>,CalculationType>::apply(const Segment1 &,const Segment2 &,const RobustPolicy &,const RobustPoint &,const RobustPoint &,const RobustPoint &,const RobustPoint &)': could not deduce template argument for 'const RobustPoint &' from 'const boost::geometry::model::point<double,2,boost::geometry::cs::geographic<boost::geometry::degree>>'  scratch1    c:\users\simon\downloads\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\detail\overlay\get_turn_info_helpers.hpp   230 
Error   C2780   'boost::tuples::tuple<boost::geometry::segment_intersection_points<IntersectionPoint,boost::geometry::segment_ratio<double>>,boost::geometry::policies::relate::segments_direction::return_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type,boost::tuples::null_type> boost::geometry::strategy::intersection::relate_cartesian_segments<boost::geometry::policies::relate::segments_tupled<boost::geometry::policies::relate::segments_intersection_points<boost::geometry::segment_intersection_points<IntersectionPoint,boost::geometry::segment_ratio<double>>>,boost::geometry::policies::relate::segments_direction>,CalculationType>::apply(const Segment1 &,const Segment2 &,const RobustPolicy &)': expects 3 arguments - 7 provided    scratch1    c:\users\simon\downloads\boost_1_61_0\boost_1_61_0\boost\geometry\algorithms\detail\overlay\get_turn_info_helpers.hpp   230 

下面是更详细的compiler output

EN

回答 1

Stack Overflow用户

发布于 2017-01-08 11:25:33

这是由一个错误引起的,更多信息在这里:https://svn.boost.org/trac/boost/ticket/12189和这里:https://svn.boost.org/trac/boost/ticket/12342

有几种可能的解决方法:

  • 使用bg::model::point
  • pass框传递多边形而不是多边形
  • 将错误跟踪器页面(如上)中提到的修复程序应用于Boost 1.61
  • upgrade to Boost 1.62

的本地副本

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38512315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档