Я пытаюсь сохранить скалярное поле в vtkUnstructuredGrid
с помощью vtkDataArray
в VTK 8.1, и в конечном итоге записать его в файл. Я компилирую свой код выпуском Visual Studio 2017 Community Edition. Однако компилятор не рад следующей строке:
// 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
?
vtkDataArray это абстрактный класс. Вы не можете создать объект абстрактного класса. Так что попробуйте использовать vtkFloatArray
или же vtkDoubleArray
вместо vtkDataArray
,
Других решений пока нет …