我在论坛上读到CGAL迭代器/循环器可以隐式地类型转换为相应的句柄。我应该能够使用迭代器/循环器“好像它们是把手”。如果我尝试比较它们,为什么会出现错误?这是一个例子:
typedef CGAL::Constrained_Delaunay_triangulation_2<K, Tds> CDT;
typedef CDT::Vertex_handle Vertex_handle;
typedef CDT::Vertex_iterator Vertex_iterator;
...
CDT cdt;
Vertex_handle va = cdt.insert(Point(0,0));
for(Vertex_iterator i=cdt.vertices_begin();...) {
va=i; /* Compiles Ok */
if(va==i) { ... } /* Pages of Error messages */
}
答案 0 :(得分:1)
解决方案很简单......
for(Vertex_iterator i=cdt.vertices_begin();...)
{
va=i; /* Implicit dereferencing */
/* Implicit deref. doesn't work, so use explicit dereferencing */
if(va==Vertex_handle(i)) { ... }
}