Функция шаблона неявный / явный параметр - PullRequest
0 голосов
/ 17 марта 2011

Я пытаюсь использовать функцию шаблона для интерполяции значений пикселей.

У меня есть два класса интерполяторов, которые реализуют алгоритм интерполяции.

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 голосов
/ 19 марта 2011

Хорошо.Полное объявление класса для 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 из списка параметров типа и передал в качестве параметра перечисление ...

Старый >>>>>

template<typename InterpType, typename ImageType, typename PelType> 
  bool getValue(const ImageType& image, PelPosition pos, PelType* pelValue);

Новый >>>>>

template<typename ImageType, typename PelType> 
  bool getValue(InterpType interp, const ImageType& image, PelPosition pos, PelType* pelValue);

Если есть лучший способ сделать это, пожалуйста, прокомментируйте.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...