如果StitchPolyhedron继承自Polyhedron_3,则ERROR,vertex_descriptor':不是'StitchPolyhedron'的成员

时间:2017-07-27 11:56:07

标签: cgal

如果类继承自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);

上面的代码编译得很好。

有谁能指出我这里的问题。

1 个答案:

答案 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