引发了异常: 读取访问权限冲突。
问题遇到的现象和发生背景
我使用一个全局变量vector容器来记录一个模型的边界边,在测试函数 test_poly_boundry()中,我打印了存储在vector容器中的边的顶点坐标。然而,我在其他地方遍历顶点坐标时却发生异常。
用代码块功能插入代码,请勿粘贴截图
std::vector<Halfedge_const_handle> halfedges;
void test_poly_boundry()
{
halfedges.clear();
Plane pl(0, 1, 0, -2);
std::ifstream input("new_poly.off");
Polyhedron new_poly;
input >> new_poly;// note: remember to write mesh messages into Polyhedrom
if (!CGAL::is_triangle_mesh(new_poly))
{
std::cout << "Input geometry is not triangulated." << std::endl;
}
SupportEval* spt_eval_ = new SupportEval(new_poly, pl);
halfedges = spt_eval_->find_poly_boundry_2(new_poly);
for (auto he : halfedges) {
std::cout << " boundry vertex point: " << he->vertex()->point() << std::endl;
}
}
int main(int argc, char* argv[])
{
test_poly_boundry();
std::cout << "-------------------------\n";
for (auto he : halfedges) {
std::cout << " boundry vertex point: " << he->vertex()->point() << std::endl;
}
return 0;
}
运行结果及报错内容
在测试函数中的信息打印正常,但在main函数后紧跟着的打印信息则一个都无法输出。
引发了异常: 读取访问权限冲突。
我的解答思路和尝试过的方法
一般情况下这种报错是指针问题,但这里并没有使用复杂的指针,并且在test函数中能够正确打印,而且元素中的内容是const的,出现这种错误简直太糟糕了。
我无法理解这两个遍历有任何的区别。
我想要达到的结果
在其他任何情况下都能够正确遍历。