模板函数显式具体化的问题
#include<iostream>#include<cstring>
template<class T>
const T Maxn(const T arr[],int n); //模板函数
//
template<>const char* Maxn(const char* arr[],int n); //模板函数显示具体化,此行报错
using namespace std;
int main()
{
int num[4]={1,2,3,4};
double dig[6]={1.1,2.2,3.3,4.4,5.5,6.6};
cout<<"The max of 4 int:"<<Maxn(num,4)<<endl<<endl;
cout<<"The max of 6 double:"<<Maxn(dig,6)<<endl<<endl; //int,double数组来测试模板函数运行
char* pc[5]={
"nnnnnnnnnnnnn",
"nnn is a handsome and excellent boy!",
"wwwwwwwwwwwwwwww",
"sssssssssssss",
"swdefsfsdf"
}; //创建指针数组。每个数组元素是指向一个字符串的指针
cout<<pc[1]<<endl<<endl<<endl;
cout<<"Your longest string is:\n"
<<Maxn(pc,5)<<endl; //此处以指针数组名为参数,调用的应该是显示具体化的函数
return 0;
}
template<class T>
const T Maxn(const T arr[],int n) //模板函数体
{
T max=arr[0];
for (int i=1;i<n;i++)
if (max<arr[i])
max=arr[i];
return max;
}
template<>const char* Maxn(const char* pc[],int n) //模板函数显示具体化,此行报错
{
const char* pm=pc[0];
for (int i=1;i<n;i++)
if (strlen(pm)<strlen(pc[i]))
pm=pc[i];
return pm;
}
我是实在不知道自己错在哪里了,模板函数显示具体化,之前用着一直没事的啊,怎么这次我怎么看都不知道错在哪,程序编译无法通过,错误如下:
==============================================================
C:\Program Files\Microsoft Visual Studio\MyProjects\程序文本\8.8.6.cpp(6) : error C2912: explicit specialization; 'const char *__cdecl Maxn(const char *[],int)' is not a function template
C:\Program Files\Microsoft Visual Studio\MyProjects\程序文本\8.8.6.cpp(6) : see declaration of 'Maxn'
C:\Program Files\Microsoft Visual Studio\MyProjects\程序文本\8.8.6.cpp(39) : error C2912: explicit specialization; 'const char *__cdecl Maxn(const char *[],int)' is not a function template
C:\Program Files\Microsoft Visual Studio\MyProjects\程序文本\8.8.6.cpp(6) : see declaration of 'Maxn'
C:\Program Files\Microsoft Visual Studio\MyProjects\程序文本\8.8.6.cpp(39) : error C2912: explicit specialization; 'const char *__cdecl Maxn(const char *[],int)' is not a function template
C:\Program Files\Microsoft Visual Studio\MyProjects\程序文本\8.8.6.cpp(6) : see declaration of 'Maxn'
=========================================================
总是在我的显示具体化函数那里报错,说他不是一个函数模板,什么意思啊
求高手赐教
[ 本帖最后由 LOV迪迪 于 2012-7-16 10:01 编辑 ]