C++模板函数---一个错误

zjzjchl 2009-01-11 07:26:45
template <typename T1, typename T2, int size>
void compare( T1 t1, T2 t2, int (&arr)[size] )//此处出错
{
cout<<"T1:"<<t1<<"\t"<<"T2:"<<t2<<endl;

}
在编译的时候出错:reference to a zero-sized array is illegal

这个只是一个函数模板,在函数模板实例化的时候用常量表达式指定size就可以了吗?怎么会在编译的时候出错啊?
...全文
82 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
elegant87 2009-01-11
  • 打赏
  • 举报
回复
用Dev编译器吧!
elegant87 2009-01-11
  • 打赏
  • 举报
回复
用Dev编译器吧!
xiaoyisnail 2009-01-11
  • 打赏
  • 举报
回复
哎,vc6。。。弃用吧,或者装个icc可以跟vc6集成
lann64 2009-01-11
  • 打赏
  • 举报
回复
用vc6就别用模板了,用模板就别用vc6了。
nineforever 2009-01-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 zjzjchl 的回复:]
你们的代码我也编译了一下,有相同的错误,有可能是我的编译器有问题,我是用VC6.0
[/Quote]

是的,VC6不支持这种写法
zjzjchl 2009-01-11
  • 打赏
  • 举报
回复
你们的代码我也编译了一下,有相同的错误,有可能是我的编译器有问题,我是用VC6.0
waizqfor 2009-01-11
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 baihacker 的回复:]
C/C++ code
//下面没有出问题.
#include <iostream>
using namespace std;
template <typename T1, typename T2, int size>
void compare( T1 t1, T2 t2, int (&arr)[size] )//此处出错
{
cout <<"T1:" <<t1 <<"\t" <<"T2:" <<t2 <<endl;

}

int main(void)
{
int arr[5];
compare(1,2,arr);

return 0;
}
[/Quote]
UP
nineforever 2009-01-11
  • 打赏
  • 举报
回复
你用的是VC6吧,快换个新点的编译器吧。。。
baihacker 2009-01-11
  • 打赏
  • 举报
回复

//下面没有出问题.
#include <iostream>
using namespace std;
template <typename T1, typename T2, int size>
void compare( T1 t1, T2 t2, int (&arr)[size] )//此处出错
{
cout <<"T1:" <<t1 <<"\t" <<"T2:" <<t2 <<endl;

}

int main(void)
{
int arr[5];
compare(1,2,arr);

return 0;
}

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧