2014-01-06 128 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; 
} 

當我編譯它,它給了我一個錯誤

在功能主'計算'沒有在該範圍內申報

任何人都可以幫助解釋這個錯誤來自哪裏?

回答

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