C++ Boost.Geometry correct()失败

C++ Boost.Geometry correct()失败,c++,boost,boost-geometry,C++,Boost,Boost Geometry,我试图在一个项目中使用Boost.Geometry,但我遇到了一个奇怪的错误。当我运行此代码时,它会按预期工作: #include <iostream> #include <boost/geometry/algorithms/append.hpp> #include <boost/geometry/algorithms/correct.hpp> #include <boost/geometry/core/cs.hpp> #include <

我试图在一个项目中使用Boost.Geometry,但我遇到了一个奇怪的错误。当我运行此代码时,它会按预期工作:

#include <iostream>

#include <boost/geometry/algorithms/append.hpp>
#include <boost/geometry/algorithms/correct.hpp>
#include <boost/geometry/core/cs.hpp>
#include <boost/geometry/geometries/point_xy.hpp>
#include <boost/geometry/geometries/polygon.hpp>

#include <boost/geometry/geometries/adapted/c_array.hpp>
BOOST_GEOMETRY_REGISTER_C_ARRAY_CS(boost::geometry::cs::cartesian);

#include <boost/geometry/geometries/adapted/boost_tuple.hpp>
BOOST_GEOMETRY_REGISTER_BOOST_TUPLE_CS(boost::geometry::cs::cartesian)

int main() {
    typedef boost::geometry::model::d2::point_xy<double> point_t;
    typedef boost::geometry::model::polygon<point_t> polygon_t;

    double points_a[][2] = {{0.0, 0.0},
                            {1.0, 0.0},
                            {1.0, 1.0},
                            {0.0, 1.0}};
    polygon_t poly_a;
    boost::geometry::append(poly_a, points_a);

//    boost::geometry::correct(poly_a);

    for(point_t p : boost::geometry::exterior_ring(poly_a)) {
        std::cout << "(" << boost::geometry::get<0>(p) << ", " << boost::geometry::get<1>(p) << ")" << std::endl;
    }
}
#包括
#包括
#包括
#包括
#包括
#包括
#包括
BOOST\u GEOMETRY\u REGISTER\u C\u ARRAY\u CS(BOOST::GEOMETRY::CS::笛卡尔);
#包括
BOOST\u GEOMETRY\u REGISTER\u BOOST\u TUPLE\u CS(BOOST::GEOMETRY::CS::笛卡尔)
int main(){
typedef boost::geometry::model::d2::point\u xy point\t;
typedef boost::geometry::model::polygon\u t;
双点_a[][2]={{0.0,0.0},
{1.0, 0.0},
{1.0, 1.0},
{0.0, 1.0}};
多边形t多边形a;
boost::geometry::append(多边形a,点a);
//几何图形:正确(多边形a);
对于(点p:boost::geometry::外环(多边形a)){

std::cout没有区域策略:

        /usr/local/boost_1_61_0/boost/mpl/assert.hpp:429:42: error: no matching function for call to
     ‘assertion_failed(mpl_::failed************
 (boost::geometry::strategy::area::services::default_strategy<boost::geometry::cartesian_tag, boost::geometry::model::d2::point_xy<double> >::NOT_IMPLEMENTED_FOR_THIS_POINT_TYPE::************)(mpl_::assert_::types<boost::geometry::model::d2::point_xy<double>, mpl_::na, mpl_::na, mpl_::na>))’
             boost::mpl::assertion_failed<(c)>( BOOST_PP_CAT(mpl_assert_arg,counter)::assert_arg() ) \
/usr/local/boost\u 1\u 61\u 0/boost/mpl/assert.hpp:429:42:错误:没有用于调用的匹配函数
'断言_失败(mpl_u::失败************
(boost::geometry::strategy::area::services::default_strategy::NOT_IMPLEMENTED_FOR_THIS_POINT_TYPE::**************)(mpl_::assert_::types))'
boost::mpl::assertion\u失败(boost\u PP\u CAT(mpl\u assert\u arg,计数器)::assert\u arg())\
加上

#include <boost/geometry.hpp>
#包括

没有显式地包含算法,谢谢!我这样做了,解决了问题,但我真的不想在这个项目中包含整个库。我尝试只导入boost/geometry/strategies/area.hpp,但没有成功。我需要做一些注册吗?你知道为什么要包含整个ge吗ometry解决了这个问题?再一次,非常感谢!没关系,我刚刚发现我需要包括boost/geometry/strategies/strategies.hpp。这使得它可以在没有整个库的情况下工作。
#include <boost/geometry.hpp>