【发布时间】: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