首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

泛型编程中怎么实现运算符重载

2012-02-08 
泛型编程中如何实现运算符重载以下这段代码中,对 和 -- 的重载那应怎样写呢?多谢。templateclass_Ti

泛型编程中如何实现运算符重载
以下这段代码中,对 "= "和 "-- "的重载那应怎样写呢?多谢。
template   <class   _Tid=int>
class   stu
{
protected:
_Tid   id;
public:
_Tid   id_pub;
typedef   stu <_Tid>   _Myt;
void   set_id   (_Tid   id)
{
this-> id=id;
}
_Tid   get_id   ()
{
return   id;
}
_Myt&operator--()
{
if   (_Tid==int)//如何判断_Tid是何种类型
this-> id_pub--;
else
{
int   t=atoi   (this-> id_pub);
t--;
itoa   (t,this-> id_pub,10);
}
                                    return   (*this);
}
_Myt&operator=(const   _Myt&_X)
{
set_id   (_X.id_pub);//这样写就没问题
                                    //set_id   (_X.get_id   ());此句会出错,说this指针错误,如想使用get_id   ()应如何写?
return   (*this);
}
};

[解决办法]
用 typeid.name() 获得类型名称
[解决办法]
template <class _Tid=int>
class stu
{
protected:
_Tid id;
public:
_Tid id_pub;
typedef stu <_Tid> _Myt;
void set_id (_Tid id)
{
this-> id=id;
}
_Tid get_id () const
{
return id;
}
_Myt& operator--()
{
int t= atoi(this-> id_pub);
t--;
_itoa (t,this-> id_pub,10);
return (*this);
}
_Myt&operator=(const _Myt& _X)
{
set_id (_X.get_id ());
return (*this);
}
};


template <>
class stu <int>
{
protected:
int id;
public:
int id_pub;
typedef stu <int> _Myt;
void set_id (int id)
{
this-> id=id;
}
int get_id () const
{
return id;
}
_Myt& operator--()
{
this-> id_pub--;
return *this;
}
_Myt&operator=(const _Myt& _X)
{
set_id (_X.get_id ());
return (*this);
}
};

热点排行