2013-02-28 35 views
0

我開始學習C++模板。 現在,我正在嘗試編譯C++模板的簡單示例。錯誤C2955和錯誤C2244使用C++模板

#include <iostream.h> 
template <class T> class pair1 { 
    T value1, value2; 
public: 
    pair1 (T first, T second) { 
     value1=first; 
     value2=second; 
    } 
    T getmax(); 
}; 

template <class T> 
T pair1::getmax(){ 
    T retval; 
    retval = value1>value2? value1 : value2; 
    return retval; 
} 
int main(){ 
    pair1<int> myobject (100, 75); 
    cout << myobject.getmax()<<endl; 
system("pause"); 
return 0; 
} 

我發生了以下2個錯誤:

  • (1)錯誤C2955: 'pair1':使用模板需要模板參數 列表
  • (2)錯誤C2244:'pair1: :GetMax的「:無法功能 定義匹配到一個現有的聲明

我使用Visual Studio 2010中

當使用inline函數如下,它的工作罰款:

#include <iostream.h> 
template <class T> class pair1 { 
    T value1, value2; 
public: 
    pair1 (T first, T second) { 
     value1=first; 
     value2=second; 
    } 
    **T getmax(){ T retval; 
retval = value1>value2? value1 : value2; 
return retval;};** 
}; 


int main(){ 
    pair1<int> myobject (100, 75); 
    cout << myobject.getmax()<<endl; 
system("pause"); 
return 0; 
} 

但是,我不想在這種情況下,使用內聯函數, 希望誰能告訴什麼是錯的C++模板代碼的第一個塊。

回答

1

您應該爲類使用模板參數。

template <class T> 
T pair1<T>::getmax(){ 
    T retval; 
    retval = value1>value2? value1 : value2; 
    return retval; 
} 
+0

這與他用過的有什麼不同? – 2013-02-28 06:40:36

+0

@Aniket,T參數怎麼樣? – ForEveR 2013-02-28 06:41:59

+0

噢,是的,他有兩個代碼張貼。我正在看第二個試圖弄清楚它出了什麼問題! – 2013-02-28 06:44:19