Comment utiliser une classe héritée d'une triangulation dans le contexte d'une triangulation dans CGAL?Héritage CGAL
Fondamentalement, je le code suivant:
typedef CGAL::Exact_predicates_inexact_constructions_kernel K;
typedef CGAL::Triangulation_vertex_base_with_info_2<int,K> Vb;
typedef CGAL::Triangulation_face_base_with_info_2<int,K> Fb;
typedef CGAL::Triangulation_data_structure_2<Vb,Fb> Tds;
typedef CGAL::Delaunay_triangulation_2<K,Tds> Delaunay;
typedef CGAL::Triangulation_2<K,Tds> Triangulation;
typedef Triangulation::Point Point;
...
Triangulation *t = new Delaunay;
...
// x and y are properly defined and instantiated
t->insert(Point(x,y));
Eh bien, bien sûr, Delaunay_triangulation_2 hérite de Triangulation_2
Alors, quand j'exécute ce code, la mise en relation se fait contre la classe Triangulation_2, dans d'autres mots, il n'exécute pas une triangulation delaunay, mais exécute une triangulation normale (en exécutant les méthodes de la classe parent au lieu des méthodes enfant).
Je pense que c'est parce que la méthode d'insertion de Triangulation_2 n'est pas déclarée comme virtuelle, donc les redéfinitions ne fonctionneront pas.
Connaissez-vous un moyen de contourner ce problème? Peut-être utiliser Constrained_triangulation_2 et Constrained_delaunay_triangulation_2? (ces classes définissent certaines méthodes virtuelles, mais j'ai lu le code source et je ne pense pas qu'elles puissent être utilisées sans ajouter les contraintes explicites)
Des idées?
Je ne suis pas connecté à StackOverflow depuis un moment. Merci, ça fait l'affaire. – Gaston