如下:
#include<iostream>
using namespace std;
template <class AA>
AA swap (AA x,AA y) //定义互换值的函数模板
{
AA temp =x;
x=y;
y=temp;
}
template<class AA> //定义比较大小的函数模板
AA max(AA x,AA y)
{
return (x>y)?x:y;
}
template<class Mytype> //定义排序的函数模板
Mytype sort(Mytype *MyArray, int size)
{
for(int i=1;i<size;i++)
for(int j=0;j<size-1;j++)
if(max(MyArray[j],MyArray[j+i])==MyArray[j])
swap(MyArray[j],MyArray[j+1]); //此处出错,说是模拟两可的重载函数
}
template <class AA>
void print(AA *MyArray,int size)
{
for(int i=0;i<size;i++)
cout<<" "<<MyArray[i];
cout<<endl;
}
void main()
{
int myarray[5]={23,56,45,85,62};
sort(myarray,5);
print(myarray,5);
return;
}
就是上面那句出错
swap(MyArray[j],MyArray[j+1]); //此处出错,说是模拟两可的重载函数
咋会模拟两可呢?想不明白
前面的max函数调用也是这样的啊,没有出错
望详细讲解一下
谢谢!
另外你的AA swap (AA x,AA y)无法交换数值,你应当用引用传递参数
AA swap (AA &x,AA &y);
似乎是和iostream中的相关模板冲突
然后swap, max都是已有的程序, 这里名称重复了.
第三, 如果想用自定义的程序, 可以试试
AA temp;
temp.swap(....) temp.max(....)