模板函数隐式/显式参数

时间:2011-03-17 17:05:59

标签: c++ templates

我正在尝试使用模板函数对像素值进行插值。

我有两类插值器来实现插值算法。

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);

我得到编译器错误“缺少模板参数列表”。我的问题是:我正在尝试做的完全不可行或我在这里遗漏了什么。

1 个答案:

答案 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);

如果有更好的方法,请发表评论。