请教一下函数模板的问题。。。麻烦看看下面的代码什么问题

qy201706 2019-01-29 04:04:13
请教一下函数模板的问题。。。麻烦看看下面的代码什么问题,编译显示:[Error] call of overloaded 'swap(int&, int&)' is ambiguous


#include<iostream>
template<typename T>
void swap(T &x,T &y);

int main()
{
using namespace std;
int a=10,b=20;
swap(a,b);
cout<<"then now integer= "<<a<<" "<<b;

return 0;
}

void swap(T &x,T &y)
{
T temp;
temp=x;
x=y;
y=temp;
}


这个我的语法和《c++ primer plus》上一样的啊。。。怎么编译就是不通过,求解释
...全文
51 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
qy201706 2019-01-29
  • 打赏
  • 举报
回复
懂了,我还是不怎么知道看这个调试的错误。。。还想请教一下
lin5161678 2019-01-29
  • 打赏
  • 举报
回复
swap这个名字
标准库用掉了
换一个名字就没事了
棉猴 2019-01-29
  • 打赏
  • 举报
回复
《C++Primer第5版中文版》中提到

所以,要把模板函数的声明和定义放在一起;另外swap()函数在std中有定义,所以自定义的函数不能使用swap()名字。
#include<iostream>
template<typename T>
void my_swap(T &x, T &y)
{
T temp;
temp = x;
x = y;
y = temp;
};

int main()
{
using namespace std;
int a = 10, b = 20;
my_swap(a, b);
cout << "then now integer= " << a << " " << b;
return 0;
}

以下是运行效果,VS2015

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧