首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-03-29 
这段代码vc6编译不过。#include iostreamusing namespace stdtemplate typename T,int sizeT Taxis(T(

这段代码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调试已经通过没有错误提示

热点排行