如果类继承自Polyhedron_3并在stitch_borders中使用,则会出错,但如果我在stitch_borders中直接使用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 :(得分: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