Проблема с объявлением переменной типа vtkSmartPointer <vtkDataArray>для неструктурированной сетки VTK - PullRequest
0 голосов
/ 07 сентября 2018

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

1 Ответ

0 голосов
/ 08 сентября 2018

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

...