2010-06-08 3 views
0

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

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" 

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

ответ

5

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

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

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

float average(Triple<float> &arg){ 
    ... 
} 
+0

о, я хотел переопределить и заставить ElemT работать только на float, верно ли это для этой цели? 'float average (Triple & arg)' – silent

+0

@ sil3nt: да, если вы просто хотите его для поплавков, это правильно (отредактировано это в моем ответе) – sth

+0

спасибо, мне все еще нужно использовать 'template ' до этого, даже когда его характерный для плавания? – silent

0

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

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

+0

И зачем беспокоиться с аргументом шаблона? Как насчет просто Triple ? – Anthony

+0

да что я был потерян, ты права я хотел Тройной silent

0

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

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); 
} 
Смежные вопросы