函数模板:我编了一个排序的程序,运行后总是有错误,怎么回事啊?

#include"iostream.h"template<classtype,intlen>voidSortArray(typearray[len]){intivar;f... #include"iostream.h"

template<class type,int len>
void SortArray(type array[len])
{
int ivar;
for(int i=0;i<=len-1;i++)
{
for(int j=0;j<=len-i-1;j++)
{
if(array[j]>array[j+1])
{
ivar=array[j];
array[j]=array[j+1];
array[j+1]=ivar;
}
}
}
for(int m=0;m<=len-1;m++)
{
cout<<array[m]<<endl;
}
}

void main()
{
int a[5]={4,6,8,3,0};
SortArray(a[5]);
}
展开
 我来答
wurandexin
2011-03-11 · TA获得超过539个赞
知道小有建树答主
回答量:499
采纳率:100%
帮助的人:319万
展开全部
第一点,函数里你的形参你声明的那个数组,根本不用加len,因为在函数内部,array只是做为一个
指针来使用,不信你sizeof一下,还有,你函数内部i<=len,你那个len的值是怎么来的。
所以得改:
template<class type>
void sort(type array[],int len)//改成这样
在main里面传参的时候,把数组元素个数也传进去,sort(array,5);
更多追问追答
追问
还是不对啊~跟之前的问题一样~
追答
那你就别贴源码了啊,,把错误提示贴出来啊。。要不然怎么帮你看。

还有,你再改完整#include
using namespace std;
ziyang64
2011-03-11 · TA获得超过962个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:814万
展开全部
SortArray(a[5]);
改成:
SortArray<int,5>(a);
追问
这样错误更多……
D:\Microsoft Visual Studio\MyProjects\SortArray\SortArray.cpp(28) : error C2144: syntax error : missing ')' before type 'int'
D:\Microsoft Visual Studio\MyProjects\SortArray\SortArray.cpp(28) : error C2780: 'void __cdecl SortArray(int [],int)' : expects 2 arguments - 0 provided
.cpp(4) : see declaration of 'SortArray'
D:.cpp(28) : error C2059: syntax error : ')'
追答
报的错与你帖出的代码不一致
template
void SortArray(type array[len]) //这里你多加了一个参数?

SortArray(a); 是对应你原来的代码的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式