类模板补充定义时,在原模板中不能使用2个虚拟类型参数吗??
#include <iostream>
using namespace std;
//模板类定义
template<typename T1, typename T2>
class FUN
{
T1 data1;
T2 data2;
public:
FUN(T1, T2);
T1 getData1()const;
T2 getData2()const;
};
template<typename T1, typename T2>
FUN<T1, T2>::FUN(T1 d1, T2 d2):data1(d1),data2(d2){}
template<typename T1, typename T2>
T1 FUN<T1, T2>::getData1()const{ return data1; }
template<typename T1, typename T2>
T2 FUN<T1, T2>::getData2()const{ return data2; }
//补充模板定义,为什么上面改为1个虚拟类型参数才可以编过去??
template<>
class FUN<char *>
{
char *data1;
T2 data2;
public:
FUN(char *, T2);
char *getData1()const;
T2 getData2()const;
};
template<>
FUN<char *>::FUN(char * d1, T2 d2):data2(d2)
{
if(d1 == NULL) data1 = NULL;
data1 = new char[strlen(d1) + 1];
strcpy(data1, d1);
}
template<>
char * FUN<char *>::getData1()const{ return data1; }
template<char *>
T2 FUN<char *>::getData2()const{ return data2; }
int main()
{
FUN <int, double>obj(1, 0.1);
system("pause");
return 0;
}