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

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

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

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

我使用一个全局变量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日

悬赏问题

  • ¥15 Stata链式中介效应代码修改
  • ¥15 latex投稿显示click download
  • ¥15 请问读取环境变量文件失败是什么原因?
  • ¥15 在若依框架下实现人脸识别
  • ¥15 添加组件无法加载页面,某块加载卡住
  • ¥15 网络科学导论,网络控制
  • ¥15 利用Sentinel-2和Landsat8做一个水库的长时序NDVI的对比,为什么Snetinel-2计算的结果最小值特别小,而Lansat8就很平均
  • ¥15 metadata提取的PDF元数据,如何转换为一个Excel
  • ¥15 关于arduino编程toCharArray()函数的使用
  • ¥100 vc++混合CEF采用CLR方式编译报错