ошибка функции шаблона - PullRequest
0 голосов
/ 08 июня 2010

У меня есть функция, которая принимает параметр класса с именем «Triple», и я возвращаю среднее значение из 3 значений типа float.

template <typename ElemT>
float average(Triple ElemT<float> &arg){
    float pos1 = arg.getElem(1);
    float pos2 = arg.getElem(2);
    float pos3 = arg.getElem(3);

    return ( (pos1+pos2+po3) /3 );
}

когда я пытаюсь скомпилировать это, я получаю

q2b.cpp:32: error: template declaration of `float average'
q2b.cpp:32: error: missing template arguments before "ElemT"

не совсем уверен, что это значит.

Ответы [ 3 ]

5 голосов
/ 08 июня 2010

Объявление параметра функции использует неправильный синтаксис. Может быть, вы хотели написать это:

template <typename ElemT>
float average(Triple<ElemT> &arg){
  ...
}

Или, если функция должна быть специфичной для троек с плавающей точкой:

float average(Triple<float> &arg){
  ...
}
0 голосов
/ 08 июня 2010

В данный момент неясно, что вы хотите сказать о значении параметра шаблона. Похоже, что не шаблонная функция должна работать нормально:

float average(Triple const &arg) {
    return (arg.getElem(1) + arg.getElem(2) + arg.getElem(3)) / 3.0f;
}

Если Triple сам является шаблоном, который может быть создан для различных возможных типов, вы можете сделать что-то вроде этого:

template <class T>
T average(Triple<T> const &arg) { 
    return (arg.getElem(1) + arg.getElem(2) + arg.getElem(3)) / T(3.0);
}
0 голосов
/ 08 июня 2010

Triple ElemT<float> &arg недопустимый тип

Вы имеете в виду Triple<ElemT> &arg?

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