erreur de segmentation avec boost :: polygone

J’ai des données de polygone que j’ai traitées. Maintenant, je veux voir dans quelle mesure mes données traitées correspondent à mes données d’origine. Pour cette tâche, je souhaite utiliser les opérateurs d’ensemble de polygones de BOOST. Le code suivant me donne cependant un segfault:

#include  #include  using namespace boost::polygon::operators; using namespace std; typedef boost::polygon::polygon_data BPolygon; typedef boost::polygon::polygon_traits::point_type BPoint; typedef boost::polygon::polygon_set_data BPolygonSet; typedef std::vector BPolygonVec; double meassureError(BPolygonVec &polys1, BPolygonVec &polys2) { BPolygonSet set1; BPolygonSet set2; assign(set1, polys1); assign(set2, polys2); return area(set1 ^ set2); } int main(int argc, char *argv[]) { BPolygonVec polys1; BPolygonVec polys2; loadPolysFromFile(polys1); loadPolysFromFile(polys2); cout << meassureError(polys1, polys2) << endl; return 0; } 

gdb-output:

 Program received signal SIGSEGV, Segmentation fault. 0x08156ce7 in std::list<boost::polygon::point_data, std::allocator<boost::polygon::point_data > >::begin (this=0x0) at /usr/include/c++/4.8.2/bits/stl_list.h:759 759 { return iterator(this->_M_impl._M_node._M_next); } 

Mes données comprennent environ 2 000 polygones avec environ 10 sumts chacun et je m’attendrais à disposer de suffisamment de mémoire pour le traiter. Qu’est-ce que je fais mal? Merci de votre aide!

De la documentation: http://www.boost.org/doc/libs/1_55_0/libs/polygon/doc/index.htm

Le type de données de coordonnées est un paramètre de modèle de tous les types de données et algorithmes fournis par la bibliothèque. Il doit être intégral. Les algorithmes implémentés dans la bibliothèque ne prennent pas en charge les types de données de coordonnées en virgule flottante, car la robustesse obtenue en virgule flottante implique un ensemble différent d’algorithmes et généralement des hypothèses propres à la plate-forme concernant les représentations en virgule flottante.