一个VC++问题求教,先谢了

来源:百度知道 编辑:UC知道 时间:2024/07/02 04:16:37
template<class T>
T sum(T a[],int n)
{
T sum=0;
for(int i=0;i<n;i++)
sum+=a[j];
return sum;
}

然后调用:
double a[]={1.111,2.222,3.333,4.444,5.555};
int n=sum(a[5],5);

这就出错,“error C2784: 'T sum(T [],int)' : could not deduce template argument for 'T []' from 'double'”

请高手指点,谢谢!!

关键的原因在于:
形参为指针 实参是一个数据元素
形成是T *行,实参为double 型

改进方法 实参a[5] 改为 a 即可

FIMLight 的说法也对

数组下标越界吧 a[]定义的时候只到a[4],没有找到a[5]

#include <iostream>

using namespace std;

template<class T>
T Sum(T a[],int n)
{
T s=0;
for(int i=0;i<n;i++)
s+=a[i];
return s;
}

int main()
{
double a[]={1.111,2.222,3.333,4.444,5.555};

double s=Sum<double>(a,5);

cout<<s<<endl;
return 0;
}

你代码中问题比较多……用模板函数时要记得要指定类型
(GCC编译通过)