在这个程序中调用swap函数给出一个叫做overloded函数调用的错误是ambiguos.please告诉我如何解决这个问题。是否有任何不同的方法来调用模板函数
#include<iostream>
using namespace std;
template <class T>
void swap(T&x,T&y)
{
T temp;
temp=x;
x=y;
y=temp;
}
int main()
{
float f1,f2;
cout<<"enter twp float numbers: ";
cout<<"Float 1: ";
cin>>f1;
cout<<"Float 2: ";
cin>>f2;
swap(f1,f2);
cout<<"After swap: float 1: "<<f1<<" float 2:"<<f2;
int a,b;
cout<<"enter twp integer numbers: ";
cout<<"int 1: ";
cin>>a;
cout<<"int 2: ";
cin>>b;
swap(a,b);
cout<<"After swap: int 1: "<<a<<" int 2:"<<b;
return 0;
}
答案 0 :(得分:7)
您的功能与move.h
中定义的功能相冲突,该功能包含在某些包含内容中。如果删除using namespace std
,则应修复此问题 - 您在std
命名空间中定义了与之冲突的函数。
答案 1 :(得分:1)
通过将交换功能更改为my_swap函数,它可以解决问题。因为swap也是c ++中预定义的函数
#include<iostream>
using namespace std;
template <class T>
void my_swap(T&x,T&y)
{
T temp;
temp=x;
x=y;
y=temp;
}
int main()
{
float f1,f2;
cout<<"enter twp float numbers: ";
cout<<"Float 1: ";
cin>>f1;
cout<<"Float 2: ";
cin>>f2;
my_swap(f1,f2);
cout<<"After swap: float 1: "<<f1<<" float 2:"<<f2;
int a,b;
cout<<"enter twp integer numbers: ";
cout<<"int 1: ";
cin>>a;
cout<<"int 2: ";
cin>>b;
my_swap(a,b);
cout<<"After swap: int 1: "<<a<<" int 2:"<<b;
return 0;
}
答案 2 :(得分:0)