错误C2955和错误C2244使用c++模板

error C2955 and error C2244 using C++ template

本文关键字:错误 c++ 模板 使用 C2244 C2955      更新时间:2023-10-16

我开始学习c++模板。现在,我试着编译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;
}

我出现了以下两个错误:

  • (1)错误C2955: 'pair1':使用模板需要模板参数
  • (2)错误C2244:'pair1::getmax':无法匹配函数定义到现有声明

我使用的是Visual Studio 2010。

当像下面这样使用内联函数时,它可以正常工作:

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

然而,我不喜欢在这种情况下使用内联函数,

应该使用模板参数。

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