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

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

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

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

我使用一个全局变量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 cv::resize不同线程时间不同
  • ¥15 web课程,怎么做啊😭没好好听课 根本不知道怎么下手
  • ¥15 做一个关于单片机的比较难的代码,然后搞一个PPT进行解释
  • ¥15 python提取.csv文件中的链接会经常出现爬取失败
  • ¥15 数据结构中的数组地址问题
  • ¥15 maya的mel里,怎样先选择模型A,然后利用mel脚本自动选择有相同名字的模型B呢。
  • ¥15 Python题,根本不会啊
  • ¥15 会会信号与系统和python的来
  • ¥15 关于#python#的问题
  • ¥20 oracle RAC 怎么配置啊,配置