#include <iostream>
#include <string>
using namespace std;
template<class Type>Type min(Type a,Type b){return a>b?b:a;}
int a[]={1,2,34,5,5};
short ss=99;
int min(int a1,int a2){
int e= min(a1,a2);
return e;
}
int call(){return min(a[2],ss);}
int main(){
int q=call();
int d=min(a[0],ss);
cout<<d<<endl<<q<<endl;
getchar();
return 0;
}
參考答案:int call(){return min(a[2],ss);}
这句就错了
你的模版只能带a,b同一类型的
int min函数也是
但是你这里a[2]是整形,ss是短整形
没有一个函数可以调用
自然就错了
而且min函数和原有库函数冲突,必须改名
可以改成如下
template<class Type>Type min1(Type a,Type b){return a>b?b:a;}
int a[]={1,2,34,5,5};
int ss=99;//改为整形
int min1(int a1,int a2){
int e= min1<int>(a1,a2); //必须调用模版,否则一直调用自己,导致死循环
return e;
}
int call(){return min1(a[2],ss);}
int main(){
int q=call();
int d=min1(a[0],ss);
cout<<d<<endl<<q<<endl;
getchar();
return 0;
}