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