50分求解c++ primer中函数模板的问题
template <typename type,int size> //size不能获取数组ia的大小
type min(type (&array2) [size])
{
type min_val=array2[0];
for(int i=1;i<size;i++)
if(array2[i]<min_val)
min_val=array2[i];
return min_val;
}
#include<iostream.h>
int ia[]={1,2,3,4,5,6,7,8,9};
int main()
{
int i=min(ia);
cout<<i<<endl;
return 0;
}
问题点数:50、回复次数:9Top
1 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2005-06-01 12:53:58 得分 0
这个东西自然是不能获取的……模板式编译时期的代码生成技巧,可没有那么强大,
不过你尝试写写如下的代码,
int i = min< int,sizeof(ia)/sizeof(int) >(ia);Top
2 楼sunman1982(冥王星)回复于 2005-06-01 12:55:47 得分 0
恩 不能知道的Top
3 楼xzgyb(老达摩)回复于 2005-06-01 13:00:54 得分 0
在vc6中编译不过
在DevCpp中可以
Top
4 楼whyglinux(山青水秀)回复于 2005-06-01 13:03:10 得分 20
程序是正确的,size也能够获取数组ia的大小。可能你使用的是VC6编译器,对模板的支持不好。换一个符合C++标准的编译器试试。Top
5 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-01 13:06:42 得分 0
这样写不行吧?Top
6 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-01 13:10:05 得分 0
恩,dev-cpp确实可以通过。Top
7 楼zhousqy(标准C匪徒)(甩拉,甩拉)回复于 2005-06-01 13:10:13 得分 0
恩,dev-cpp确实可以通过。Top
8 楼goodboy1881(积木)(谁都别拦着我在水源升星)回复于 2005-06-01 13:13:01 得分 0
卡……Top
9 楼cmoring(my study will go on)回复于 2005-06-01 13:15:08 得分 30
Dev-C++编译可以通过,表示语法合法。Dev-C++是用GCC的编译内核,完全支持C++标准和特性。VC++对C++标准支持忒差。N多的C++标准不支持。例如:for(int i = 0;i < 10;i++) ; for(int i = 1;i<3;i++); 这是符号C++标准的,for里面的变量作用域截至到循环结束。可是在VC++里面编译通不过。Top




