读书人

这段代码vc6编译不过。解决方案

发布时间: 2012-03-29 12:53:12 作者: rapoo

这段代码vc6编译不过。
#include <iostream>

using namespace std;
template <typename T,int size>

T Taxis(T(&array)[size])
{
T min_val = array[0];
for(int i = 1;i<size;++i)
{
if(array[i] < min_val)
{
min_val = array[i];
}
}
return min_val;
}

int main()
{
int array[] = {1,2,4,3,2,6,5,9,2,1,4,6,8};
cout<<Taxis(array)<<endl;
return 0 ;
}

C:\Documents and Settings\Administrator\×ÀÃæ\н¨Îļþ¼Ð\11111111\1.cpp(6) : error C2265: '<Unknown>' : reference to a zero-sized array is illegal
C:\Documents and Settings\Administrator\×ÀÃæ\н¨Îļþ¼Ð\11111111\1.cpp(22) : error C2784: 'T __cdecl Taxis(T (&)[1])' : could not deduce template argument for ' (&)[1]' from 'int [13]'
Error executing cl.exe.

1.obj - 2 error(s), 0 warning(s)


是《c++ Primer》的例子

[解决办法]
g++可以正常运行
所以你换编译器吧,可能是编译器不支持

[解决办法]
Taxis(array,sizeof(array)) ,Taxis(array)没什么通用性

template <typename T>
T Taxis(const T* array ,size_t size)
{
int min_index = 0;
for(int i = 1;i <size;++i)
{
if(array[i] < array[min_index])
{
min_index = i;
}
}
return array[min_index];
}

[解决办法]
vs2005 可以编过
[解决办法]
vc6对泛型支持的不好
[解决办法]
我也出现过这个问题。
vc6对范型还是不够支持
[解决办法]
vc6对模板支持不够,建议不要用了
[解决办法]
嗯,对的,我用vs2005调试已经通过没有错误提示

读书人网 >C++

热点推荐