VTK常见异常:运行时vtkSmartPointerBase中的Register函数出现读取访问权限冲突异常解决
图片描述:
出错位置:
这个问题出现在函数的返回值处。
例如:
vtkPolyData* function()
{
//情形1:
vtkNew<vtkTriangleFilter> data;
...
vtkPolyData* output = data->GetOutput();
return output;
//情形2:
vtkSmartPointer<vtkTriangleFilter> data =
vtkSmartPointer<vtkTriangleFilter>::New();
...
vtkPolyData* output = data->GetOutput();
return output;
}
出错原因:
函数体中如果要返回Filter的输出vtkPolyData数据的话,如果Filter是用智能指针(vtkNew和vtkSmartPointer)声明的,就会出现这个错误。
解决方法:
需要作为函数输出的Filter不要使用智能指针来声明,修改如下:
vtkPolyData* function()
{
//修改方法:
vtkTriangleFilter* data = vtkTriangleFilter::New();
...
vtkPolyData* output = data->GetOutput();
return output;
}