C++ 在二维Delaunay三角剖分中插入顶点时出错

C++ 在二维Delaunay三角剖分中插入顶点时出错,c++,cgal,C++,Cgal,我想将N个随机顶点添加到2D Delaunay三角剖分中。我的代码是: 模板 DT类:公共CGAL::Delaunay_三角剖分_2 { 公众: typedef typename内核::FT; typedef typename内核::Point_2 Point; typedef typename CGAL::Delaunay_三角测量_2DT2; //介于零和最大值之间的随机数 FT r(FT max=1.0){return max*(FT)rand()/(FT)rand_max;} 无效生成器

我想将N个随机顶点添加到2D Delaunay三角剖分中。我的代码是:

模板
DT类:公共CGAL::Delaunay_三角剖分_2
{
公众:
typedef typename内核::FT;
typedef typename内核::Point_2 Point;
typedef typename CGAL::Delaunay_三角测量_2DT2;
//介于零和最大值之间的随机数
FT r(FT max=1.0){return max*(FT)rand()/(FT)rand_max;}
无效生成器\u随机(无符号int nb\u生成器)
{
Dt2::clear();
点p(r(),r());
for(无符号整数i=0;i
但是当我调用generators\u random方法时,编译器会给出以下错误:

/home/lucas/Algorithmes géometriques/TP2/src/dt.h:83:12: note:
cannot convert ‘p’ (type ‘DT<CGAL::Epick,CGAL::Triangulation_data_structure_2
<My_vertex_base<CGAL::Triangulation_vertex_base_2<CGAL::Epick> >, 
CGAL::Triangulation_face_base_2<CGAL::Epick> > >::Point {aka
CGAL::Point_2<CGAL::Epick>}’) to type ‘std::ostream& {aka 
std::basic_ostream<char>&}’ insert(p);
/home/lucas/Algorithmes géometriques/TP2/src/dt.h:83:12:注:
无法转换“p”(类型“DT::Point{aka
CGAL::Point_2}'),以键入'std::ostream&{aka
std::basic_ostream&}插入(p);
我没有使用FT,而是尝试了双浮动,但没有效果。有什么问题吗


谢谢。

我已经解决了这个问题。我没有使用
insert()
,而是使用
push\u back()
作为记录,这是工作版本:

// random number between zero and max
FT r(FT max = 1.0) { return max * (FT)rand() / (FT)RAND_MAX; }

// random (uniform)
void generators_random(unsigned int nb_generators)
{
    Dt2::clear();
    for(unsigned int i = 0; i < nb_generators; i++)
        this->push_back(Point(r(), r()));
}
//零和最大值之间的随机数
FT r(FT max=1.0){return max*(FT)rand()/(FT)rand_max;}
//随机(均匀)
无效生成器\u随机(无符号int nb\u生成器)
{
Dt2::clear();
for(无符号整数i=0;i向后推(点(r(),r());
}

对CGAL不太熟悉,但是
insert(p)
插入顶点的正确方法是正确的,还是应该将它们流式地插入其中?类似于
insert()的东西我想它不能作为流工作。我试着按照文档:很好!它是作为流实现的;很像尝试
insert()
带有
std::string
的字符将不起作用;但是
push_back()
会起作用。我怀疑您也可以创建一个包含所有点的流,然后使用
insert()
来代替。请注意,首先生成所有点,然后一次将它们全部插入(有一种使用迭代器的方法)。