函数模板:我编了一个排序的程序,运行后总是有错误,怎么回事啊?
#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]);
} 展开
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]);
} 展开
2个回答
展开全部
第一点,函数里你的形参你声明的那个数组,根本不用加len,因为在函数内部,array只是做为一个
指针来使用,不信你sizeof一下,还有,你函数内部i<=len,你那个len的值是怎么来的。
所以得改:
template<class type>
void sort(type array[],int len)//改成这样
在main里面传参的时候,把数组元素个数也传进去,sort(array,5);
指针来使用,不信你sizeof一下,还有,你函数内部i<=len,你那个len的值是怎么来的。
所以得改:
template<class type>
void sort(type array[],int len)//改成这样
在main里面传参的时候,把数组元素个数也传进去,sort(array,5);
更多追问追答
追问
还是不对啊~跟之前的问题一样~
追答
那你就别贴源码了啊,,把错误提示贴出来啊。。要不然怎么帮你看。
还有,你再改完整#include
using namespace std;
展开全部
SortArray(a[5]);
改成:
SortArray<int,5>(a);
改成:
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); 是对应你原来的代码的。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询