Проблема с объявлением переменной типа vtkSmartPointer & lt; vtkDataArray & gt; для неструктурированной сети ВТК

Я пытаюсь сохранить скалярное поле в 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?

0

Решение

vtkDataArray это абстрактный класс. Вы не можете создать объект абстрактного класса. Так что попробуйте использовать vtkFloatArray или же vtkDoubleArray вместо vtkDataArray,

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]