C++参数引用问题

cqu_sgv5 2011-04-02 09:09:53
#include<iostream>
using namespace std;
template<class T>
T Min(T *a,int n){ //这行里的*改为&为什么不行呢。(错误说是不能使参数模版专用化)
T MIN=a[0];
for(int i=0;i<n;i++)
if(a[i]<a[0])
MIN=a[i];
return MIN;
}
void main(){
int a[]={1,2,3};
float b[]={7.8,5.5,4.3,3.15555};
double c[]={2.333333333,4,6,7.999};
long d[]={4,3,2};
char f[]={'1','a','A'};
cout<<Min(a,3)<<endl;
cout<<Min(b,4)<<endl;
cout<<Min(c,4)<<endl;
cout<<Min(d,3)<<endl;
cout<<Min(f,3)<<endl;
}

还有,是不是不能够传递参数的意思
...全文
159 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
heartgoon2010 2011-04-03
  • 打赏
  • 举报
回复
因为你要传递的参数是数组,所以,如果要使用&的话,形参就应该是数组的引用,2楼是正解
野男孩 2011-04-03
  • 打赏
  • 举报
回复
指针和数组名对模版来说是不同的类型
翻越寒武 2011-04-02
  • 打赏
  • 举报
回复
&与对象是绑定的,现在对象的类型还没确定
pengzhixi 2011-04-02
  • 打赏
  • 举报
回复
template<class T,size_t N>
T Min(T (&a)[N],int n){ //这行里的*改为&为什么不行呢。(错误说是不能使参数模版专用化)
T MIN=a[0];
for(int i=0;i<n;i++)
if(a[i]<a[0])
MIN=a[i];
return MIN;
}
int main(){
int a[]={1,2,3};
float b[]={7.8,5.5,4.3,3.15555};
double c[]={2.333333333,4,6,7.999};
long d[]={4,3,2};
char f[]={'1','a','A'};
cout<<Min(a,3)<<endl;
cout<<Min(b,4)<<endl;
cout<<Min(c,4)<<endl;
cout<<Min(d,3)<<endl;
cout<<Min(f,3)<<endl;

system("pause");
return 0;
}
如果你想用引用的话
無_1024 2011-04-02
  • 打赏
  • 举报
回复
因为类型不确定

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧