1

可能这是一个愚蠢的问题,只是一个简单的问题,但我无法编译相对简单的代码。我尝试做的是使用 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 时,会出现相同的错误。知道我做错了什么吗?

谢谢!

4

1 回答 1

1

我在文档中看到的唯一运算符是多边形集

另外,请注意:

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

因此,请确保实际使用它们:

住在科利鲁

#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;
}
于 2020-06-24T01:10:36.660 回答