Могу ли я перегрузить operator =, чтобы присвоить объект класса переменной другого класса, но оба класса принадлежат одному и тому же шаблону класса? - PullRequest
0 голосов
/ 19 мая 2018

Например, у меня есть класс

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

1 Ответ

0 голосов
/ 19 мая 2018

Сделать оператор присваивания функцией-членом шаблона с отдельным параметром типа:

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

Демо.

...