问题描述:
原本是一个指针习题, 原代码再主函数的if里用的是直接判断前后大小的方法
后面突发奇想把这个判断方法函数化
但一直谈标题这个错误: 显示错误C2665 “std::swap”: 2 个重载中没有一个可以转换所有参数类型
代码块
#include <iostream>
using namespace std;
void swap(int** a, int** b)//设定函数
{
int* temp;
temp = *a;
*a = *b;
*b = temp;
}
int main() {
int n1, n2, n3;
cout << "输入三个整数" << endl;
cin >> n1 >> n2 >> n3;
int* a1, * a2, * a3;
a1 = &n1;
a2 = &n2;
a3 = &n3;
if (*a1 < *a2)
{
swap(&n1, &n2);//引用函数持续报错
}
if (*a2 < *a3)
{
swap(&n1,&n3);//引用函数持续报错
}
if (*a1 < *a2)
{
swap(&n1, &n2);//引用函数持续报错
}
cout << "重新排序:" << n1 << " " << n2 << " " << n3 << " " << endl;
return 0;
}
/*int main() {
int n1, n2, n3;
cout << "输入三个整数"<<endl;
cin >> n1 >> n2 >> n3 ;
int* a1, * a2, * a3, temp;
a1 = &n1;
a2 = &n2;
a3 = &n3;
if (*a1 < *a2)
{
temp = *a1;
*a1 = *a2;
*a2 = temp;
}
if (*a2 < *a3)
{
temp = *a2;
*a2 = *a3;
*a3 = temp;
}
if (*a1 < *a2)
{
temp = *a1;
*a1 = *a3;
*a3 = temp;
}
cout << "重新排序:" << n1<<" " << n2<<" " << n3<<" " << endl;
return 0;
}*/