2016-04-24 12 views
0

Ich versuche, ImageToPathFilter in ITK zu verwenden, aber ich bin nicht in der Lage, es mit der normalen Routine ClassName::Pointer = ClassName::New(); zu instanziieren.Instantiierung von ImageToPathFilter in ITK

Dies ist mein Code

typedef itk::Image<unsigned int, 3> LabelImageType; 
typedef itk::ChainCodePath<2> PathType; 
typedef itk::ImageToPathFilter<LabelImageType, PathType> ImageToPathType; 
ImageToPathType::Pointer filter = ImageToPathType::New(); 

Die letzte Zeile

cannot convert from 'itk::SmartPointer<itk::PathSource<TOutputPath>>' to 'itk::SmartPointer<itk::ImageToPathFilter<LabelImageType,PathType>>'

Diese Klasse umfasst die folgenden Fehler verursacht als Filter geworben wird, aber es erbt von PathSource so PathSource<PathType> statt ImageToPathFilter mit funktioniert aber ich kann nicht SetInput() wie ich mit einem ITK-Filter verwenden würde.

Ich denke, die Lösung könnte einige Casting Zauberei beinhalten, aber ich bin sehr ignorant in dieser Abteilung.

Danke

Antwort

1

Es stellt sich heraus, dass die itk::ImageToPathFilter Klasse eine Basisklasse, die nicht instanziiert werden soll.

ITK-Klassen, die intelligente Zeiger verwenden die itkNewMacro in ihrer Definition, aber diese Klasse nicht, New() Aufruf auf diese Klasse der Eltern Neu(), die itk::PathSource ist enden würde anrufen. Dies erklärt die Fehlermeldung.

Verwandte Themen