#include<iostream> #include<cstring> #include<string> using namespace std; template <typename T> T max5(T num[], int n); template <> char* max5( char* ch[], int n); int main(void) { double num1[4]={1.2,2.4,3.6,4.8}; int num2[6]={3,5,6,8,9,9}; int r1=max5(num2,6); double r2=max5(num1,4); cout<<"r1 = "<<r1<<endl; cout<<"r2 = "<<r2<<endl; char *str[5]={"abc","abcde","abcdef","abcdefg","abcdefgh"}; char* r3=new char [20]; r3 =max5(str,5); cout<<"r3 = "<<r3<<endl`; return 0; } template <typename T> T max5(T num[], int n) { int i; T max=num[0]; for(i=1;i<n;i++) { if(max<num[i]) max=num[i]; } return max; } template <>char *max5( char *ch[], int n) { int i; int max=strlen((ch[0])); int p=0; for(i=1;i<n;i++) { if(max<strlen((ch[i]))) { p=i; } } return ch[p]; }
疑惑:19行警告 [Warning] deprecated conversion from string constant to ‘char*’ [-Wwrite-strings]
网上有人说要把具体化中的二维数组参数设为const,但改完之后又出现了别的错误,暂未解决。