错误C2955和使用C ++模板的错误C2244

时间:2013-02-28 06:36:43

标签: c++ templates

我开始学习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;
}

我发生了以下2个错误:

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

但是,我不喜欢在这种情况下使用内联函数, 希望任何人都可以知道第一块C ++模板代码有什么问题。

1 个答案:

答案 0 :(得分:1)

您应该为类使用模板参数。

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