在代码块中使用函数模板时,调用重载函数是不明确的

时间:2016-01-20 07:07:03

标签: c++

#include<iostream>
using namespace std;
template<class T>
void swap(T & x, T & y){
    T temp;
    temp = x;
    x = y;
    y = temp;
}



int main(){
   char ch1,ch2;
   cin>>ch1>>ch2;
   swap(ch1,ch2);
   cout<<ch1<<" "<<ch2<<endl;
   int a,b;
   cin>>a>>b;
   swap(a,b);
   cout<<a<<" "<<b<<endl;

   return 0;
}

这里是源代码...我不知道这里出了什么问题。我跟着调用参考。但每次我试图运行代码时,代码块给了我一个模糊的错误。 提前谢谢。

1 个答案:

答案 0 :(得分:0)

#include<iostream>
template<class T>
void swap(T &x, T &y){
    T temp;
    temp = x;
    x = y;
    y = temp;
}

int main(){
   char ch1,ch2;
   std::cin>>ch1>>ch2;
   swap(ch1,ch2);
   std::cout<<ch1<<" "<<ch2<<"\n";
   int a,b;
   std::cin>>a>>b;
   swap(a,b);
   std::cout<<a<<" "<<b<<"\n";
   return 0; 
}

由于swap已存在于命名空间中,因此在使用namespace std。

时,您将无法重载它