3 回答
TA贡献1820条经验 获得超10个赞
首先,C没有函数模版。C++才有。
其次,template <class T>是函数声明的一部分,所以下面函数实现应该是:
template <class T>
void swap(T &a,T &b){
int temp;
temp=a;
a=b;
b=temp;
}
最后,#include <iostream>,在标准的C++函数中,std的域中已经有一个swap函数。
而且前面也using namespace了。函数声明重复。
两个办法:
1 swap(i,j);改为 ::swap(i,j); //全局化。
2 swap改个名字。
TA贡献1810条经验 获得超4个赞
#include "stdafx.h"
#include <iostream>
template <class T>
void myswap(T &a,T &b); //因为标准模板库中有swap函数,系统不能识别,我只要函数名改一下就可以了
int main(){
using namespace std;
int i=20;
int j=30;
cout<<"i,j="<<i<<j<<endl;
swap(i,j);
cout<<i<<","<<j<<endl;
getchar();
return 0;
}
template <class T> //这里也需要
void myswap(T &a,T &b){
T temp;
temp=a;
a=b;
b=temp;
}
TA贡献1963条经验 获得超6个赞
#include <iostream>
using namespace std; //引入std命名空间
template <class T>
void myswap(T &a,T &b); //swap在iostream定义过了,换个名字
int main(){
using namespace std;
int i=20;
int j=30;
cout<<"i,j="<<i<<j<<endl;
myswap(i,j);
cout<<i<<","<<j<<endl;
getchar();
return 0;
}
template<class T> //这个还是要写一遍
void myswap(T &a,T &b){
T temp; //temp是T类型
temp=a;
a=b;
b=temp;
}
- 3 回答
- 0 关注
- 337 浏览
添加回答
举报