【发布时间】:2013-02-28 06:36:42
【问题描述】:
我开始学习 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++ 模板代码有什么问题。
【问题讨论】: