我正在尝试使用模板函数对像素值进行插值。
我有两类插值器来实现插值算法。
class LinearInterpolator;
class NearestNeighborInterpolator;
我有不同类别的图像;
class ColorImage;
class GrayScaleImage;
然后我有一个使用你选择的特定插值器进行插值的函数。
template<typename InterpType, typename ImageType, typename PelType>
bool getValue(const ImageType& image, PelPosition pos, PelType* pelValue);
在我的调用代码中我有
getValue<LinearInterpolator>(image, pos, pelValue);
我得到编译器错误“缺少模板参数列表”。我的问题是:我正在尝试做的完全不可行或我在这里遗漏了什么。
答案 0 :(得分:0)
好的。 LinearInterpolator的完整类声明实际上看起来像这样......
template <
typename ImageType,
typename OutputPixelType = typename ImageType::Pixel,
typename FieldType = double,
template<typename From, typename To, typename Enable = void> class OutputPixelConverter = StaticCast
>
class LinearInterpolator : public AbstractInterpolator;
所以我最终将InterpType从类型参数列表中取出并传入一个枚举作为参数......
旧&gt;&gt;&gt;&gt;&gt;
template<typename InterpType, typename ImageType, typename PelType>
bool getValue(const ImageType& image, PelPosition pos, PelType* pelValue);
新&gt;&gt;&gt;&gt;&gt;
template<typename ImageType, typename PelType>
bool getValue(InterpType interp, const ImageType& image, PelPosition pos, PelType* pelValue);
如果有更好的方法,请发表评论。