请问我想对带参数的类模板进行特化(specialization),为什么不能成功。代码如下:
#include<iostream.h>
template<class T1,int N>
class C1
{
protected:
T1 First,Second;
public:
C1(T1,T1);
T1 GetMaxOne();
int Value[N];
};
template<class T1,int N>
C1<T1,N>::C1(T1 x1,T1 x2)
{
First=x1;
Second=x2;
}
template<class T1,int N>
T1 C1<T1,N>::GetMaxOne()
{
return First>Second?First:Second;
}
//下面对类模板进行特化
template<>
class C1<char*,const int>
{
protected:
char *First;
char*Second;
public:
C1(char*,char*);
char*GetMaxOne();
char Value[N];
};
template<>
C1<char*,N>::C1(char*x1,char*x2)
{
First=x1;
Second=x2;
}
template<>
char*C1<char*,N>::GetMaxOne()
{
return "ABC";
}
//T1 MaxOne(T1 x,T1 y){return x>y?x:y;};
void main()
{
C1<double,5> X(1.83,2.5);
cout<<X.GetMaxOne()<<endl;
C1<char*,10> Y("123","XYZ");
cout<<Y.GetMaxOne()<<endl;
}