Я унаследовал класс от класса VTK. Конструктор этого класса должен получить два аргумента. Как мне использовать оператор New ()?
Спасибо
Вот пример:
class MyClass:vtkClass
{
MyClass(argument1, argument2);
static MyClass* New()
}
и инициализация
vtkSmartPointer<MyClass> class = vtkSmartPointer<MyClass(??)>
Я считаю, что следующая публикация списка рассылки означает, что вы не можете обойти требование конструктора с 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) для инициализации переменных класса, а не внутри конструктора.
Других решений пока нет …