Tôi đang gặp một số khó khăn khi nhận được vertex_handle cho mỗi điểm kết thúc của một cạnh trong một tam giác Delaunay. Kể từ khi tôi rèn đầu tôi chống lại điều này trong vài giờ tôi nghĩ có lẽ một trong những bạn guys có thể giúp tôi ra với vấn đề dường như tầm thường này:Nhận một vertex_handle từ một edge_iterator
#include <iostream>
#include <CGAL/Exact_predicates_inexact_constructions_kernel.h>
#include <CGAL/Delaunay_triangulation_2.h>
using namespace std;
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Delaunay_triangulation_2<K> Triangulation;
typedef Triangulation::Point Point;
typedef Triangulation::Edge_iterator Edge_iterator;
typedef Triangulation::Vertex_handle Vertex;
int main(){
Point p;
Triangulation t;
while(cin >> p)
t.insert(p);
// Iterate over edges
for(Edge_iterator ei=t.finite_edges_begin();ei!=t.finite_edges_end(); ei++){
// Get a vertex from the edge
Vertex vs = ei->source();
}
}
Theo tài liệu dereferencing một Edge_iterator tôi sẽ nhận được một Edge_handle và Edge_handle nên có các thành viên nguồn() và target() chỉ cần lấy các điểm cuối, nhưng nó sẽ không biên dịch và có vẻ là sai. Derefencing như trên sẽ cho tôi một cặp <> mà không có những chức năng thành viên.
Bất kỳ ý tưởng nào tôi đang làm sai?
Trình biên dịch không thành công ở đâu? – payne
Đó là (ei *) là loại cặp mà rõ ràng là không có nguồn(). – cdecker