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

求高手解决模板二义性有关问题

2012-03-27 
求高手解决模板二义性问题#include string.h#include iostream.htemplate classTT&Sum(Ta[],intsize

求高手解决模板二义性问题
#include <string.h>
#include <iostream.h>


template <class   T>
T&   Sum(T   a[],int   size)
{
T   sum=0;
for(int   i=0;i <size;i++)
{
sum=sum+a[i];
}
return   sum;
}
char*   Sum(char*   b,int   size)
{
*(b+size)= '\0 ';
return   b;
}
char   *Sum(char   **b,int   size)
{
char   *tmp=new   char[30];
for(int   i=0;i <size;i++)
{
strcat(tmp,*(b+i));
}
return   tmp;
}
int   main(int   argc,   char*   argv[])
{
double   a[]={23.556,45.65,34.67};
char   *b=new   char[20];
for(int   i=0;i <20;i++)
{
b[i]=65+i;
}
cout < <Sum(a,3) < <endl;
cout < <Sum(b,10) < <endl;
return   0;
}

[解决办法]
啥错?啥编译器?
[解决办法]
VC6还是早点扔了吧。
template <class T>
T Sum(T a[],int size)
其它不用改,虽然设计这么一组sum是很不合理的。
[解决办法]
扔了VC6,换vc2005
没错!
[解决办法]
lz代码用gcc可以直接编译过去
但有两个警告.
[解决办法]
使用模板特化
将其他版本的SUM定义成特化模板函数,例如:
template <>
char* Sum <char*> (char* b,int size)
{
*(b+size)= '\0 ';
return b;
}

热点排行