Bonjour,
Je suis tombe sur ce problème hier.
J ai une bibliotheque pleine de templates et de traits (CGAL) dont j aimerais utiliser les services, et les cacher dans une dll.
Le jeu est donc devenu "garder les headers cgal loin de mes headers publics". Il faut semble-t-il faire du Pimpl, qui consiste si j ai bien compris a forward declarer la partie a cacher sous la forme d une classe.
j ai donc :
A.h
Code :
- class Poly2D_cgal;
- class A
- {
- public :
- ...
- private :
- Poly2D_cgal *mPoly2D;
- };
|
Puis :
A.cpp
Code :
- #include <A.h>
- #include <Poly2D_cgal.h>
|
Le probleme est que Poly2D_cgal n est pas vraiment une classe mais un typedef
Poly2D_cgal.h
Code :
- class Poly2D_cgal_traits
- {
- ...
- };
- typedef CGAL::Polygon_2<Poly2D_cgal_traits> Poly2D_cgal;
|
et tout ca ne compile pas. A la rigueur au lieu de faire un typedef je peux heriter, mais ca ne m enchante pas de reecrire des constructeurs
Comment puis-je tourner ce bazar pour faire ce qu il faut ?
Merci