error: call of overloaded ‘swap(int&, int&)’ is ambiguous

港控/mmm° 2023-05-31 06:52 115阅读 0赞

代码:

#include
using namespace std;
template
void swap(T&a, T&b) {
T tmp = a;
a = b;
b = tmp;
}
int main()
{
int a = 3, b = 30;
swap(a, b);
cout<<”a = “<<a<<” b = “<<b;
cout<<endl;
float x = 1.2,y = 6.8;
swap(x, y);
cout<<”x = “<<x<<” y = “<<y;
cout<<endl;
double q = 1, p = 2;
swap(q, p);
cout<<”q = “<<q<<” p = “<<p;
cout<<endl;
return 0;
}

编译:

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM5NzcxNjM3_size_16_color_FFFFFF_t_70

原因:c++自己提供了swap,因此在编译的时候会报错:这个重载是分不清的。

1 #include
2 using namespace std;
3 template
4 void Swap(T&a, T&b) {
5 T tmp = a;
6 a = b;
7 b = tmp;
8 }
9 int main()
10 {
11 int a = 3, b = 30;
12 Swap(a, b);
13 cout<<”a = “<<a<<” b = “<<b;
14 cout<<endl;
15 float x = 1.2,y = 6.8;
16 Swap(x, y);
17 cout<<”x = “<<x<<” y = “<<y;
18 cout<<endl;
19 double q = 1, p = 2;
20 swap(q, p);
21 cout<<”q = “<<q<<” p = “<<p;
22 cout<<endl;
23 return 0;
24 }

运行结果

20191023145032425.png

发表评论

表情:
评论列表 (有 0 条评论,115人围观)

还没有评论,来说两句吧...

相关阅读