C++ primer 上的一个程序, 编译不过啊哪位高手能给小弟我解惑
C++ primer 上的一个程序, 编译不过啊。。。。谁能给我解惑啊
#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;
}
// size 没有指定——ok
// size = 初始化表中的值的个数
int ia[] = { 10, 7, 14, 3, 25 };
double da[6] = { 10.2, 7.1, 14.5, 3.2, 25.0, 16.8 };
int main()
{
// 为5 个int 的数组实例化min()
// Type => int, size => 5
int i = min( ia );
if ( i != 3 )
cout < < "??oops: integer min() failed\n ";
else cout < < "!!ok: integer min() worked\n ";
// 为 6 个 double 的数组实例化 min()
// Type => double, size => 6
double d = min( da );
if ( d != 3.2 )
cout < < "??oops: double min() failed\n ";
else cout < < "!!ok: double min() worked\n ";
return 0;
}
编译失败,D:\Program Files\Microsoft Visual Studio\MyProjects\Test\Test.cpp(6) : error C2265: ' <Unknown> ' : reference to a zero-sized array is illegal
------解决方案--------------------
楼主用的可能是那个对Template支持的不太好的VC6.0
#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;
}
// size 没有指定——ok
// size = 初始化表中的值的个数
int ia[] = { 10, 7, 14, 3, 25 };
double da[6] = { 10.2, 7.1, 14.5, 3.2, 25.0, 16.8 };
int main()
{
// 为5 个int 的数组实例化min()
// Type => int, size => 5
int i = min( ia );
if ( i != 3 )
cout < < "??oops: integer min() failed\n ";
else cout < < "!!ok: integer min() worked\n ";
// 为 6 个 double 的数组实例化 min()
// Type => double, size => 6
double d = min( da );
if ( d != 3.2 )
cout < < "??oops: double min() failed\n ";
else cout < < "!!ok: double min() worked\n ";
return 0;
}
编译失败,D:\Program Files\Microsoft Visual Studio\MyProjects\Test\Test.cpp(6) : error C2265: ' <Unknown> ' : reference to a zero-sized array is illegal
------解决方案--------------------
楼主用的可能是那个对Template支持的不太好的VC6.0