首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

实在是找不出来模板具体化函数错在那里。请一下?谢谢

2012-02-14 
实在是找不出来模板具体化函数错在那里。请高手指点一下?多谢可以直接build下列源代码。#include iostream

实在是找不出来模板具体化函数错在那里。请高手指点一下?多谢
可以直接build下列源代码。

#include <iostream>
#include <cstring>

using namespace std;

template <typename T>
T maxn(const T arr[],int n);
template <> char * maxn<char *>(const char * ch[],int n);

int main()
{

int iarr[6]={101,202,105,403,650,330};
long larr[4]={11L,22L,33L,23L};
cout<<maxn(iarr,6)<<endl;
cout<<maxn(larr,4)<<endl;
char * ch[5]={"qaz","wsxe","qwer","rt","rtfx"};
cout<<maxn(ch,5);
return 0;
}

template <typename T>
T maxn(const T arr[],int n)
{
T tmp=arr[0];
for (int i=1;i<n;i++)
if (tmp<arr[i])
tmp=arr[i];
return tmp;
}

template <> char * maxn<char *>(const char * ch[],int n)
{
int ilenmax=strlen(*ch[0]),ilen;
char * pch= ch[0];

for (int i=1;i<n;i++)
{
ilen = strlen(*ch[i]);
if (ilenmax<ilen)
{
ilenmax=ilen;
pch = ch[i];
}
}

return pch;

}


[解决办法]
函数template < > char * maxn <char * >(const char * ch[],int n) 改为template < > char * maxn <char * >(char * const ch[],int n) 
另外,函数实现中, 
int ilenmax=strlen(*ch[0])改为int ilenmax=strlen(ch[0]); 
ilen = strlen(*ch[i]); 改为ilen = strlen(ch[i]);
[解决办法]
const的问题,注意const在*号的左边和右边代表的意义不一样的

热点排行