gpt4 book ai didi

c++ - 我可以重载 operator= 将一个类的对象分配给另一个类的变量,但两个类都来自同一个类模板

转载 作者:行者123 更新时间:2023-11-30 03:23:21 25 4
gpt4 key购买 nike

比如我有一个类

template<class T>
class Number
{
private:
T number;
public:
Number(T num)
{
number=num;
}
void operator=(T num)
{
number=num;
}
}

如何重载赋值运算符以将 Number 对象赋值给 Number 类型的变量,或者使用同一模板的另一种类型的参数专门化一种类型的方法?顺便说一句,是否可以将类模板 Number 的别名设置为“MyChar”,这样我就不需要再使用类名 Number 而只需使用别名 MyChar

最佳答案

使赋值运算符成为具有单独类型参数的模板成员函数:

// 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;
}

Demo.

关于c++ - 我可以重载 operator= 将一个类的对象分配给另一个类的变量,但两个类都来自同一个类模板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50423964/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com