template< class T1, class T2 >
class Pair {
T1 first;
T2 second;
};
我被要求寫一個交換()方法,使得第一元件成爲第二和第二第一。我有:C++:交換不同類型的模板類元素?
Pair<T2,T1> swap() {
return Pair<T2,T1>(second, first);
}
但這返回一個新的對象,而不是交換,在那裏我覺得它需要改變自己的數據成員一個void方法。這是可能的,因爲T1和T2可能是不同的類類型?換句話說,我不能簡單地設置temp = first,first = second,second = temp,因爲它會嘗試將它們轉換爲不同的類型。我不知道爲什麼你可能想要有一個模板對象改變其類型的順序,因爲它似乎會造成混亂,但似乎是我被要求做的事情。
編輯:謝謝大家回答!和我想的一樣,交換位置顯然沒有任何意義,對swap()函數的請求非常模糊。
我會選擇與swap不同的名稱。過去人們使用標準庫的人會認爲'swap'是爲了交換同一類型的兩個對象的內容。 「翻轉」怎麼樣? – 2010-05-10 19:04:36
@Emile:我不認爲這是一個大問題。它是一個'swap()',它需要__one參數___由__two部分組成.__它可以做什麼,但交換這些?然而,不尋常的是,它不可能(不過,我不知道怎麼做)一個就地交換。這確實不同於我們所知道的swap()。 – sbi 2010-05-11 05:30:30