我这个程序有错误吗?
#include <iostream>
using namespace std;
template <typename T> //A 模版
T addarr (T arr[] , int n);
template <typename T> //B 模版
T addarr (T * arr[] , int n);
struct debts
{
char name [50];
double amount;
};
int main (void)
{
int things[6] = {13,31,103,301,310,130};
struct debts mr_E[3] =
{
{ "Ima wolfe " , 2400.0},
{ "Ura Foxe " , 1300.0},
{ "Iby Stout ", 1800.0}
};
double * pd[3];
for (int i = 0 ; i < 3 ;i++)
pd[i] = &mr_E [i].amount;
cout < < "sum of things: \n ";
cout < < addarr (things,6) < <endl;
cout < < "sum of debts: \n ";
cout < < addarr ( pd, 3); // A 处
return 0;
}
template <typename T>
T addarr (T arr[] , int n)
{
int sum = 0;
cout < < "Template A \n ";
for(int i = 0 ; i < n ; i++ )
sum +=arr [i];
return sum;
}
template <typename T>
T addarr (T * arr[] , int n)
{
int sum = 0;
cout < < "Template B\n ";
for ( int i =0 ;i < n; i++)
sum += *arr[i];
return sum;
}
编译时在A处提示错误 error C2667: 'addarr ' : none of 2 overload have a best conversion
为什么 意思好象是说找不到合适的函数来调用?
按照我想 他因该会 调用 B 摸板啊
我应该没写错啊 高手们来帮我看看 谢谢
[解决办法]
你就扔了VC6,换VC2005再试吧。
用VC6学C++就是浪费生命。