| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 513 人关注过本帖
标题:关于模板实参推演
只看楼主 加入收藏
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
 问题点数:0 回复次数:3 
关于模板实参推演

#pragma warning(disable:4305)
#include<iostream>

using namespace std;

template<typename Type,int size>
Type min(Type (&r_array)[size])
{
Type min_val=r_array[0];
for(int i=1;i<size;i++)
if(r_array[i]<min_val)
min_val=r_array[i];

return min_val;
}

int main()
{
float f[10]={0.3,0.2,0.1,0.4,1.0,0.5,0.6,0.7,0.8,0.9};
int n[5]={1,5,2,3,4};

cout<<min(n);

return 0;
}

错误:
error C2265: '<Unknown>' : reference to a zero-sized array is illegal
error C2784: 'Type __cdecl min(Type (&)[1])' : could not deduce template argument for ' (&)[1]' from 'int [5]'

搜索更多相关主题的帖子: 推演 模板 
2006-04-23 15:39
gototheworld
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2006-3-24
收藏
得分:0 

怎么感觉是摸板写错了,改了一下,你看看是不是你想要的结果,
#pragma warning(disable:4305)
#include<iostream>
using namespace std;
template<typename Type>
Type min(Type *r_array,int size)
{
Type min_val=r_array[0];
for(int i=1;i<size;i++)
if(r_array[i]<min_val)
min_val=r_array[i];

return min_val;
}
int main()
{
float f[10]={0.3,0.2,0.1,0.4,1.0,0.5,0.6,0.7,0.8,0.9};
int n[5]={1,5,2,3,4};
cout<<min(n,5);
return 0;
}

[此贴子已经被作者于2006-4-23 18:33:33编辑过]


路漫漫其修远兮 吾将上下而求索
2006-04-23 17:45
karlzhouzhi
Rank: 1
等 级:新手上路
帖 子:70
专家分:0
注 册:2005-12-25
收藏
得分:0 
以下是引用gototheworld在2006-4-23 17:45:00的发言:

怎么感觉是摸板写错了,改了一下,你看看是不是你想要的结果,
#pragma warning(disable:4305)
#include<iostream>
using namespace std;
template<typename Type>
Type min(Type *r_array,int size)
{
Type min_val=r_array[0];
for(int i=1;i<size;i++)
if(r_array[i]<min_val)
min_val=r_array[i];

return min_val;
}
int main()
{
float f[10]={0.3,0.2,0.1,0.4,1.0,0.5,0.6,0.7,0.8,0.9};
int n[5]={1,5,2,3,4};
cout<<min(n,5);
return 0;
}


能在不改变我的接口情况下实现么?

2006-04-23 19:21
gototheworld
Rank: 1
等 级:新手上路
帖 子:218
专家分:0
注 册:2006-3-24
收藏
得分:0 

那可以的
#pragma warning(disable:4305)
#include<iostream>
using namespace std;
template<typename Type>
Type min(Type *r_array)
{
Type min_val=r_array[0];
for(int i=1;i<(sizeof(r_array)/sizeof(*r_array));i++)//第二个表达式的左边是求数组个数
if(r_array[i]<min_val)
min_val=r_array[i];

return min_val;
}
int main()
{
float f[10]={0.3,0.2,0.1,0.4,1.0,0.5,0.6,0.7,0.8,0.9};
int n[5]={1,5,2,3,4};
cout<<min(n);
return 0;
}


路漫漫其修远兮 吾将上下而求索
2006-04-23 20:47
快速回复:关于模板实参推演
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.021205 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved