下面给出的代码与c ++中的模板概念有关。 传递变量时,我得不到合适的结果。 我的预期输出是交换数字。 但是,编译器显示错误。
#include<iostream>
using namespace std;
template <class T>
void swap(T& a,T& b)
{
T temp;
temp=a;
a=b;b=temp;
}
int main()
{
int a1,b1;
cin>>a1>>b1;
swap(a1,b1);
cout<<a1<<endl<<b1<<endl;
}
答案 0 :(得分:0)
摆脱'using namespace std;'因为在std命名空间中交换功能模板已经定义。
另一种解决方案,你可以专门交换。但是您只能专门为用户定义的类型标准化函数
#include<iostream>
using namespace std;
struct Int
{
int i;
};
namespace std{
template <>
void swap<Int>(Int& a,Int& b)
{
Int temp;
temp=a;
a=b;b=temp;
}
}
int main()
{
Int a1,b1;
std::cin>>a1.i>>b1.i;
swap(a1,b1);
std::cout<<a1.i<<std::endl<<b1.i<<std::endl;
}