具体:
...
template<class type>
class set
{
type*element;
int number;
public:
set()
{
element=new type[N];
for(int i=0;i<N;i++)
element[i]=0;
number=-1;
}
.
.
.
void main()
{
char s;
int sa,sb;
cout<<"请选择数据类型:"<<'\n'<<"f: float型"<<'\n'<<"d: double型"<<'\n'<<"i: int型"<<endl;
set<int> Aset,Bset,Cset,Dset;
cin>>s;
while(s!='i'&&s!='f'&&s!='d')
{
cout<<"输入有误!请重新输入!\n"<<"请选择数据类型(注意是小写字母f、d或i):"<<endl;
cin>>s;
}
if(s=='i')
{
int a1[A_SIZE],b1[B_SIZE];
INT_ReadtoArray(a1,b1,sa,sb);
Aset.inset(a1,sa);
Bset.inset(b1,sb);
}
else if(s=='f')
{
set<float> Aset,Bset,Cset,Dset;
float a2[A_SIZE],b2[B_SIZE];
FLOAT_ReadtoArray(a2,b2,sa,sb);
Aset.inset(a2,sa);
Bset.inset(b2,sb);
}
else
{
set<double> Aset,Bset,Cset,Dset;
double a3[A_SIZE],b3[B_SIZE];
DOUBLE_ReadtoArray(a3,b3,sa,sb);
Aset.inset(a3,sa);
Bset.inset(b3,sb);
}
.
.
.
就是说默认是处理int型数据,然后跟需要改成其它类型的,我想过,要是改对象名(如set<float> Eset,Fset,Gset,Hset;)可以解决问题,但是这样的话就要修改很多地方,有木有办法直接在if语句中取消set<int> Aset,Bset,Cset,Dset后再set<float> Aset,Bset,Cset,Dset ???