函数模板中模板中第二个参数 如果没有给明确的类型,为什么错误?附有代码

#include<iostream>usingnamespacestd;template<classT>Tmin(constT*arr,unsignedTlen)//问题... #include<iostream>

using namespace std;
template <class T>
T min(const T* arr, unsigned T len)//问题出在这里的len 前面的类型没有被具体定义 ,解释一下
{
unsigned int tmp = 0;
for (unsigned int i = 0; i<len; ++i)
if (arr[i]<arr[tmp])
tmp = i;
return arr[tmp];

}
int main()
{
int i_a[5] = { 67, 83, 96, 79, 105 };
double d_a[6] = { 1.7, 0.3, 5.6, 9.7, 5.5, 8.8 };
cout << "min(i_a,5)=" << min(i_a, 5) << endl;
cout << "min(d_a,6)=" << min(d_a, 6) << endl;
while (1);
return 0;
}
还有一个问题就是如果第二个参数不给明确的类型,只要调用的时候使第一个参数的类型与第二个参数一致了,就匹配成功,且通过编译了。如下
例:T min(const T *ar , T len);
调用 min(a,2);(a是数组名)
展开
 我来答
笃侠6A
2014-12-27 · TA获得超过3734个赞
知道大有可为答主
回答量:3205
采纳率:75%
帮助的人:3272万
展开全部
unsigned T len中要去掉unsigned或去 T,不能两者都有,因为unsigned T没有定义。
追问
但是unsigned int len 是有定义的啊,因为C++里没有这种定义,所以T不能这样作为无符号的通用类型???
追答
是 unsigned T没有定义
博思aippt
2024-07-20 广告
作为深圳市博思云创科技有限公司的工作人员,对于Word文档生成PPT的操作,我们有以下建议:1. 使用另存为功能:在Word中编辑完文档后,点击文件->另存为,选择PowerPoint演示文稿(*.pptx)格式,即可将文档内容转换为PPT... 点击进入详情页
本回答由博思aippt提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式