3 回答

TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超10個(gè)贊
首先,C沒有函數(shù)模版。C++才有。
其次,template <class T>是函數(shù)聲明的一部分,所以下面函數(shù)實(shí)現(xiàn)應(yīng)該是:
template <class T>
void swap(T &a,T &b){
int temp;
temp=a;
a=b;
b=temp;
}
最后,#include <iostream>,在標(biāo)準(zhǔn)的C++函數(shù)中,std的域中已經(jīng)有一個(gè)swap函數(shù)。
而且前面也using namespace了。函數(shù)聲明重復(fù)。
兩個(gè)辦法:
1 swap(i,j);改為 ::swap(i,j); //全局化。
2 swap改個(gè)名字。

TA貢獻(xiàn)1810條經(jīng)驗(yàn) 獲得超4個(gè)贊
#include "stdafx.h"
#include <iostream>
template <class T>
void myswap(T &a,T &b); //因?yàn)闃?biāo)準(zhǔn)模板庫中有swap函數(shù),系統(tǒng)不能識(shí)別,我只要函數(shù)名改一下就可以了
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貢獻(xiàn)1963條經(jīng)驗(yàn) 獲得超6個(gè)贊
#include <iostream>
using namespace std; //引入std命名空間
template <class T>
void myswap(T &a,T &b); //swap在iostream定義過了,換個(gè)名字
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> //這個(gè)還是要寫一遍
void myswap(T &a,T &b){
T temp; //temp是T類型
temp=a;
a=b;
b=temp;
}
- 3 回答
- 0 關(guān)注
- 391 瀏覽
添加回答
舉報(bào)