声明vtkSmartPointer类型的变量时出现问题 对于VTK非结构化网格

问题描述 投票:0回答:1

我试图在VTK 8.1中使用vtkUnstructuredGridvtkDataArray中存储标量字段,并最终将其写入文件。我正在通过Visual Studio 2017社区版编译我的代码。但是,编译器对以下行不满意:

// Add a scalar field to the unstructured grid
vtkSmartPointer<vtkDataArray> data_array = vtkSmartPointer<vtkDataArray>::New();

我收到以下错误:

Error C2440 '<function-style-cast>': cannot convert from 'initializer list' to 'vtkSmartPointer<vtkDataArray>'  mycode c:\vtk\src\common\core\vtksmartpointer.h 155 

我想我有所需的标题:

#include "vtkCellArray.h"
#include "vtkCellData.h"
#include "vtkDataSet.h"
#include "vtkPoints.h"
#include <vtkPointData.h>
#include <vtkCellData.h>
#include <vtkDoubleArray.h>
#include <vtkDataArray.h>
#include <vtkUnstructuredGrid.h>
#include <vtkXMLUnstructuredGridWriter.h>

我在网上的研究发现,data_array的声明行应该有效,但我不知道为什么编译器不喜欢它。

有人可以帮帮我吗?有没有其他方法在vtkUnstructuredGrid中存储标量字段并跳过使用vtkDataArray

c++ vtk paraview
1个回答
2
投票

vtkDataArray是一个抽象类。您无法创建抽象类的对象。所以尝试使用vtkFloatArrayvtkDoubleArray而不是vtkDataArray

© www.soinside.com 2019 - 2024. All rights reserved.