2017-07-27 28 views
0

如果類繼承自Polyhedron_3並在stitch_borders中使用,但如果直接在stitch_borders中使用Polyhedron_3,則不會出現錯誤。上述錯誤,vertex_descriptor':不是'StitchPolyhedron'的成員,如果StitchPolyhedron是從Polyhedron_3繼承的

typedef CGAL::Exact_predicates_inexact_constructions_kernel K; 
class StitchPolyhedron : public CGAL::Polyhedron_3<K> 
{ 
public: 
    StitchPolyhedron() {} 
    virtual ~StitchPolyhedron() {} 
}; 

StitchPolyhedron mesh; 
CGAL::Polygon_mesh_processing::stitch_borders(mesh); 

代碼給出了一個錯誤

vertex_descriptor的':沒有的成員 '高於StitchPolyhedron'

typedef CGAL::Exact_predicates_inexact_constructions_kernel K; 
typedef CGAL::Polyhedron_3<K> StitchPolyhedron; 

StitchPolyhedron mesh; 
CGAL::Polygon_mesh_processing::stitch_borders(mesh); 

代碼編譯罰款。

任何人都可以指出我這裏有什麼問題。

回答

0

繼承的類必須是FaceListGraph的模型。通常在boost命名空間中添加以下部分專業化應該是足夠了:

namespace boost { 
struct boost::graph_traits<POLYHEDRON_TYPE>: 
    public boost::graph_traits<BASE_POLYHEDRON_TYPE> 
{}; 
} // namespace boost 

您可能需要轉發性能爲好。在boost命名空間中添加以下部分專業化:

namespace boost{ 
template <class Tag> 
struct property_map<POLYHEDRON_TYPE, Tag> : 
    public property_map<BASE_POLYHEDRON_TYPE, Tag> 
{}; 
} //namespace boost 
相關問題