инициализация vtkSmartPointer с собственным унаследованным классом

Я унаследовал класс от класса VTK. Конструктор этого класса должен получить два аргумента. Как мне использовать оператор New ()?

Спасибо

Вот пример:

class MyClass:vtkClass
{
MyClass(argument1, argument2);

static MyClass* New()
}

и инициализация

vtkSmartPointer<MyClass> class = vtkSmartPointer<MyClass(??)>

1

Решение

Я считаю, что следующая публикация списка рассылки означает, что вы не можете обойти требование конструктора с 0 аргументами:

http://www.vtk.org/pipermail/vtkusers/2012-July/124922.html

В результате вы должны будете заставить конструктор вашего класса принимать 0 аргументов. Затем инициализируйте так:

vtkSmartPointer<MyClass> class = vtkSmartPointer<MyClass>::New();

Реализация Myclass :: New () должна либо использовать vtkStandardNewMacro, либо вы можете просто реализовать его как

MyClass *
MyClass::New()
{
return new MyClass();
}

После того, как у вас есть экземпляр класса, используйте функцию Initialize (аргумент1, аргумент2) для инициализации переменных класса, а не внутри конструктора.

1

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

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

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