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

C++ 为VTK非结构化网格声明vtkSmartPointer类型的变量时出现问题,c++,vtk,paraview,C++,Vtk,Paraview,我试图使用VTK 8.1中的vtkDataArray将标量字段存储在vtkUnstructuredGrid中,并最终将其写入文件。我正在通过Visual Studio 2017社区版编译我的代码。但是,编译器对以下行不满意: // Add a scalar field to the unstructured grid vtkSmartPointer<vtkDataArray> data_array = vtkSmartPointer<vtkDataArray>::New(

我试图使用VTK 8.1中的vtkDataArray将标量字段存储在vtkUnstructuredGrid中,并最终将其写入文件。我正在通过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>
我的在线研究发现数据数组的声明行应该可以工作,但我不知道编译器为什么不喜欢它


谁能帮帮我吗?是否有其他方法在vtkUnstructuredGrid中存储标量字段并使用vtkDataArray跳过?

是一个抽象类。不能创建抽象类的对象。因此,尝试使用vtkFloatArray或vtkDoubleArray而不是vtkDataArray。

您应该发布最小、完整且可验证的示例。阅读你提供的细节不足以让我们帮助你。谢谢你,阿米特。当我使用vtkDoubleArray时,它非常有效。