例如,我有一个班级
template<class T>
class Number
{
private:
T number;
public:
Number(T num)
{
number=num;
}
void operator=(T num)
{
number=num;
}
}
如何重载assign运算符以分配Number&lt; char&gt;对象为Number&lt; int&gt;类型的变量,或者使用同一模板的另一种类型的参数来专门化一种类型的方法?顺便说一下,是否可以将类模板的别名,数字&lt; char&gt;,作为&#34; MyChar&#34;所以我不需要使用类名号&lt; char&gt;除了别名MyChar
之外答案 0 :(得分:2)
使赋值运算符成为具有单独类型参数的模板成员函数:
// Make sure the template on U can access private number
template <class U> friend class Number;
template<class U>
Number<T>& operator=(const Number<U>& num)
{
number = static_cast<T>(num.number);
return *this;
}