#include<iostream>
#include<string>
using namespace std;
template<class T1,class T2>
class Pair
{
public:
Pair(T1 f,T2 s)
{
first=&f;second=&s;
}
void set(T1 f,T2 s)
{
first=&f;second=&s;
}
T1* getf()const
{
return first;
}
T2 *gets()const
{
return second;
}
void swap()
{
T1 temp=first;//这里应用指针类型强制转换才行: T1 *temp=first;first=(T1*)second;second=(T2*)temp;
first=second;
second=temp;
}
private:
T1 first;//这个地方改为T1 *FIRST
T2 second;//这里改成T2*SECOND
};
int main()
{
Pair<int,int> p(10,11);
cout<<p.getf()<<" "<<p.gets()<<endl;
p.set(9,12);
cout<<p.getf()<<" "<<p.gets()<<endl;
p.swap();
cout<<p.getf()<<" "<<p.gets()<<endl;
system("pause");
return 0;
}
你既想在不同的数据类型间转换,而有不想数据空间切割,或语法错误,只有用指针,应为不论什么类型的指针变量指向一个内存地址,地址的编码是四字节的.