0

PolygonSet の & 演算子をオーバーロードしようとしていますが、次のエラーで終了します。boost::PolygonSet には set 関数がないことは理解できますが、この問題を修正するための入力を誰でも提供できます。view_as を試しましたが、成功しませんでした。

コード:

  Function definition for concept    
    namespace boost { namespace polygon {
         template <>
         struct geometry_concept<boost_geom_api::PolygonSet> {
             typedef polygon_set_concept type;
         }; } }

         PolygonSet PolygonSet::operator&(const PolygonSet& right) const {
             using namespace boost::polygon::operators;
             PolygonSet ps (*this);
             ps &= right;
             return ps;
         }

 PolygonSet& PolygonSet::operator&=(const PolygonSet& right) {
     using namespace boost::polygon::operators;
     using namespace gtl;
     pgns &= right.pgns;
     return (*this); }

エラー:

/polygon_set.cpp:160:19:   required from here
/u/logic/depot/boost_1_57_0/include/boost/polygon/interval_concept.hpp:168:10:

エラー: 「struct boost::enable_if, boost::polygon::point_data >」に「type」という名前の型がありません</p>

コンパイル時のメッセージ

/u/logic/depot/boost_1_57_0/include/boost/polygon/detail/polygon_set_view.hpp:198:5: 'geometry_type_1& boost::polygon::self_assignment_boolean_op(geometry_type_1&, const geometry_type_2&) [with geometry_type_1 = std::vector から必要] ; geometry_type_2 = boost_geom_api::PolygonSet; int op_type = 1]' /u/logic/depot/boost_1_57_0/include/boost/polygon/polygon_set_concept.hpp:419:90: 'typename boost::enable_if::type, typename boost::polygon::is_any_polygon_set_type から必要: :type>::type, geometry_type_1>::type& boost::polygon::operators::operator&=(geometry_type_1&, const geometry_type_2&) [with geometry_type_1 = std::vector; geometry_type_2 = boost_geom_api::PolygonSet; typename boost::enable_if

boost::polygon::is_mutable_polygon_set_type::type, typename boost::polygon::is_any_polygon_set_type::type>::type, geometry_type_1>::type = std::vector]' /polygon_set.cpp:160:13: から必要ここで /u/logic/depot/boost_1_57_0/include/boost/polygon/polygon_90_set_traits.hpp:57:51: エラー: 'boost::polygon::get_coordinate_type::traits_type に 'coordinate_type' という名前の型がありません {aka struct boost:: polygon::polygon_set_traits}'</p>

'typename boost::enable_if::type, typename boost::polygon::is_any_polygon_set_type::type>::type, geometry_type_1>::type& boost::polygon::operators::operator&=(geometry_type_1&, const geometry_type_2&) から必要[with geometry_type_1 = std::vector; geometry_type_2 = std::vector; typename boost::enable_if::type, typename boost::polygon::is_any_polygon_set_type::type>::type, geometry_type_1>::type = std::vector]'</p>

4

0 に答える 0