初学c++模板遇到的问题

xlshn 2011-11-23 12:19:56
钱能那本书上的例子,为什么编译不能通过?
#include<iostream>
#include <string>
using namespace std;
template<typename T>
void swap(T& a,T& b){
T temp=a;
a=b;
b=temp;
}
int main(){
double dx=1.22,dy=2.11;
int ix=11,iy=22;
string s1="abc",s2="def";
swap(dx,dy);
cout<<dx<<dy<<endl;
swap(ix,iy);
cout<<ix<<iy<<endl;
cout<<s1<<s2<<endl;
system("pause");
}
...全文
40 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
对象 2011-11-23
  • 打赏
  • 举报
回复
ls正解,swap函数是stl里的去区间操作函数之一,所以LZ这个程序有redefination的错误,解决方法有两个。第一个是改名,第二个是把swap装到自定义的命名空间里,调用的时候用命名空间+函数名调用。
yulinlang 2011-11-23
  • 打赏
  • 举报
回复
因为C++标准库里已有
template <class T> void swap ( T& a, T& b );
这个模版函数,会造成重复定义。
建议把swap改个别的名字。

64,643

社区成员

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

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