jiangjiang_321 2022-09-28 16:30 采纳率: 100%
浏览 723
已结题

引发了异常: 读取访问权限冲突。

引发了异常: 读取访问权限冲突。

问题遇到的现象和发生背景

我使用一个全局变量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函数后紧跟着的打印信息则一个都无法输出。
引发了异常: 读取访问权限冲突。

img

img

我的解答思路和尝试过的方法

一般情况下这种报错是指针问题,但这里并没有使用复杂的指针,并且在test函数中能够正确打印,而且元素中的内容是const的,出现这种错误简直太糟糕了。
我无法理解这两个遍历有任何的区别。

我想要达到的结果
在其他任何情况下都能够正确遍历。
  • 写回答

1条回答 默认 最新

  • 赵4老师 2022-09-28 17:13
    关注

    halfedges = spt_eval_->find_poly_boundry_2(new_poly);
    应改为
    std::vector halfedges1=spt_eval_->find_poly_boundry_2(new_poly);
    for (auto he : halfedges1) halfedges.append(he);

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 4月15日
  • 已采纳回答 4月7日
  • 创建了问题 9月28日

悬赏问题

  • ¥20 机器学习能否像多层线性模型一样处理嵌套数据
  • ¥20 西门子S7-Graph,S7-300,梯形图
  • ¥50 用易语言http 访问不了网页
  • ¥50 safari浏览器fetch提交数据后数据丢失问题
  • ¥15 matlab不知道怎么改,求解答!!
  • ¥15 永磁直线电机的电流环pi调不出来
  • ¥15 用stata实现聚类的代码
  • ¥15 请问paddlehub能支持移动端开发吗?在Android studio上该如何部署?
  • ¥20 docker里部署springboot项目,访问不到扬声器
  • ¥15 netty整合springboot之后自动重连失效