2014-01-06 5 views
1

Только начинаю изучать шаблоны в C++ и у меня есть небольшой кусочек кода, который не компиляцией:Синтаксическая ошибка определения функции шаблона

template <class gen_data> 
{ 
    gen_data calculate(gen_data a, gen_data b) 
    { 
     return a+b; 
    } 
} 

int main() 
{ 
    int c,d; 
    cout<<"The sum is: "<<calculate(c,d)<<endl; 
    return 0; 
} 

Когда я скомпилировал он дал мне ошибку

в функции main 'calculate' не был объявлен в этой области

Может ли кто-нибудь помочь объяснить, откуда эта ошибка?

ответ

4

У вас неправильный синтаксис для объявления функции шаблона. Не должно быть скобок, окружающих функцию calculate. Попробуйте переписать его следующим образом:

template <class gen_data> gen_data calculate(gen_data a, gen_data b) 
{ 
    return a+b; 
} 

Надеюсь, это поможет!

+0

большое вам спасибо! – user3150381

1

У вас есть одна пара брекетов слишком много. Это сработало для меня:

#include <iostream> 

template <class gen_data> 
gen_data calculate(gen_data a, gen_data b) { 
return a+b; 
} 

int main() { 
int c = 1, d = 2; 
std::cout<<"The sum is: "<<calculate(c,d)<<std::endl; 
return 0; 
} 
Смежные вопросы