初学者求助:我这么写类成员函数的模板实现,错在哪里?
我这么写类成员函数的模板实现,错在哪里?
class A
{
public:
template <typename T>
void Max(T t1,int a);
}
template <typename T>
void A::Max(T t1,int a)
{
//处理部分省略
}
void main()
{
int i = 0;
float f = 2.456;
A ca;
ca.Max(i,2);
ca.Max(f,3);
}
[解决办法]
template <typename T>
class A
{
public:
void Max(T t1,int a);
}
或者
template <typename T>
T Max(T t1,int a);
[解决办法]
VC6 不支持这种模板
这只是,比较旧的编译器,不支持而已。
换个版本就好
比如
VS2008(VC9),VS2010(VC10),VS2012(VC11?),VS2013(VC12?)
后两种,需要win7,win8,
xp 跑不起来,所以不太清楚,想来应该支持的。
版本号对不对,不是很清楚。
[解决办法]
(1)定义函数模板(function template)
// implement strcmp-like generic compare function
template <typename T>
int compare(const T &v1, const T &v2)
{
if (v1 < v2) return -1;
if (v2 < v1) return 1;
return 0;
}
template <typename Type>
class Queue
{
public:
Queue();
Type & front();
const Type & front() const;
void push(const Type &);
// …
};
class A
{
};
int main()
{
return 0;
}