【问题标题】:Add polygons with boost::polygon does not compile?使用 boost::polygon 添加多边形不编译?
【发布时间】:2020-06-23 05:44:03
【问题描述】:

可能这是一个愚蠢的问题,只是一个简单的问题,但我无法编译相对简单的代码。我尝试做的是使用 boost::polygon (一些显示相关部分的伪代码)添加/连接两个多边形:

#include <boost/polygon/polygon.hpp>

boost::polygon::polygon_with_holes_data<int>     baseData; // base data to work with
boost::polygon::polygon_with_holes_data<int>     opData;   // operational data to be applied to base 

fill both baseData and opData via set() and set_holes() here...

boost::polygon::polygon_set_data<int> result=baseData + opData;

最后一行是我偶然发现的:编译器说操作符“+”对于 polygon_with_holes_data 是未知的:

error C2678: binary '+' : no operator found which takes a left-hand operand of type 'boost::polygon::polygon_with_holes_data<T>' (or there is no acceptable conversion)

当我使用 polygon_data 而不是 polygon_with_holes_data 时,会出现同样的错误。知道我做错了什么吗?

谢谢!

【问题讨论】:

  • 你为什么把它标记为“C”?
  • @UlrichEckhardt 抱歉,不小心搞砸了!
  • 尝试致电append()。如果未定义运算符,则未定义。
  • @jwdonahue + 运算符不执行附加操作,它旨在连接几何级别的多边形。还存在一个 - 运算符,旨在从另一个多边形中切割出一个多边形,因此这里必须做的事情完全不同。根据 boost-description 应该定义这样的操作符并用于该操作
  • 有连接功能吗?您的编译器说没有加号运算符。也许有一个单独的头文件声明该运算符?可能没有T operator+(T, T),但可能有T::operator+(T),在这种情况下您需要result += baseData + opData。我尝试查找该课程的成员,但没有找到。我这里的互联网速度慢且不可靠,所以你可能比我运气好。

标签: c++ boost boost-polygon


【解决方案1】:

我在文档中看到的唯一运算符是polygon sets

另外,请注意:

运算符在命名空间boost::polygon::operators中声明。

所以,请确保实际使用它们:

Live On Coliru

#include <boost/polygon/polygon.hpp>
#include <boost/polygon/polygon_set_data.hpp>
#include <boost/polygon/polygon_with_holes_data.hpp>

namespace bp = boost::polygon;
using poly = bp::polygon_with_holes_data<int>;
using pset = bp::polygon_set_data<int>;

int main() {
    poly baseData; // base data to work with
    poly opData;   // operational data to be applied to base

    // fill both baseData and opData via set() and set_holes() here...

    using namespace bp::operators;
    pset x = baseData + opData;
}

【讨论】:

    猜你喜欢
    • 2013-10-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    相关资源
    最近更新 更多