哭~!!!!大哥们帮忙!!!!函数模板!!!!

zhongwei5695 2005-04-28 09:16:18
#include <iostream>
#include <cstdlib>
using namespace std;

template<typename Any>
void swap(Any &a,Any &b);

int main()
{
int i=10;
int j=20;
cout<<"i , j = "<<i<<" , "<<j<<endl;
swap(i,j);
cout<<"Now i , j = "<<i<<" , "<<j<<endl;
double x=24.5;
double y=552.32;
cout<<"x , y = "<<x<<" , "<<y<<endl;
swap(x,y);
cout<<"Now x , y = "<<x<<" , "<<y<<endl;

system("pause");
return 0;
}

template<typename Any>
void swap(Any & a ,Any & b)
{
Any temp;
temp = a;
a = b;
b = temp;
}
错误信息:
D:\C++\primer8_06.cpp In function `int main()':
13 D:\C++\primer8_06.cpp call of overloaded `swap(int&, int&)' is ambiguous
error D:\C++\primer8_06.cpp:6 candidates are: void swap(Any&, Any&) [with Any = int]
121 C:\Dev-Cpp\include\c++\3.3.1\bits\stl_algobase.h void std::swap(_Tp&, _Tp&) [with _Tp = int]
18 D:\C++\primer8_06.cpp call of overloaded `swap(double&, double&)' is ambiguous
error D:\C++\primer8_06.cpp:6 candidates are: void swap(Any&, Any&) [with Any = double]
121 C:\Dev-Cpp\include\c++\3.3.1\bits\stl_algobase.h void std::swap(_Tp&, _Tp&) [with _Tp = double]
例子出自C++ primer plus p225 程序清单8.9

是例子错了? 还是小弟粗心检查不出,大哥们帮我看看 到底错误在那里??
应该如何改正!?
...全文
70 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhongwei5695 2005-04-28
  • 打赏
  • 举报
回复
谢谢 大哥们 知道了
zhangfjj 2005-04-28
  • 打赏
  • 举报
回复
13 D:\C++\primer8_06.cpp call of overloaded `swap(int&, int&)' is ambiguous
error D:\C++\primer8_06.cpp:6 candidates are: void swap(Any&, Any&) [with Any = int]
其实从此句就可以看出来
zhangfjj 2005-04-28
  • 打赏
  • 举报
回复
#include <iostream>
#include <cstdlib>
using namespace std;

template<typename Any>
void swap1(Any &a,Any &b);

int main()
{
int i=10;
int j=20;
cout<<"i , j = "<<i<<" , "<<j<<endl;
swap1(i,j);
cout<<"Now i , j = "<<i<<" , "<<j<<endl;
double x=24.5;
double y=552.32;
cout<<"x , y = "<<x<<" , "<<y<<endl;
swap1(x,y);
cout<<"Now x , y = "<<x<<" , "<<y<<endl;

system("pause");
return 0;
}

template<typename Any>
void swap1(Any & a ,Any & b)
{
Any temp;
temp = a;
a = b;
b = temp;
}
zhangfjj 2005-04-28
  • 打赏
  • 举报
回复
好象在系统库函数里面提供有swap的函数模板,你再定义swap与系统的发生了冲突,你只要把swap改个名就可以了,比如swap1

64,651

社区成员

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

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