C 抽象类型声明

C++ abstract type declaration

本文关键字:声明 类型 抽象类 抽象      更新时间:2023-10-16

我正在使用itk。itk::LinearInterpolateImageFunctionitk::InterpolateImageFunction的子类。

为什么以下陈述无效?

itk::InterpolateImageFunction<ImageType,double>::Pointer interpolator = itk::LinearInterpolateImageFunction<ImageType, double>::New();

我得到的错误是

错误:从 itk::LinearInterpolateImageFunction<itk::Image<unsigned char, 3u>, double>::Pointer {aka itk::SmartPointer<itk::LinearInterpolateImageFunction<itk::Image<unsigned char, 3u>, double> >}至非量表类型 itk::InterpolateImageFunction<itk::Image<unsigned char, 3u>, double>::Pointer {aka itk::SmartPointer<itk::InterpolateImageFunction<itk::Image<unsigned char, 3u>, double> >}请求

InterpolateImageFunction::Pointer typedef是 SmartPointer<InterpolateImageFunction>。与std::shared_ptr不同,itk::SmartPointer不支持相关类型的智能指针之间的转换。也就是说,InterpolateImageFunction<X,Y>::PointerLinearInterpolateImageFunction<X,Y>::Pointer是无关类型的。