Перегрузка оператора присваивания в шаблоне класса, который может приводить к другому типу шаблона

#ifndef NUMBER_HPP
#define NUMBER_HPP

template <class T>
class Number
{
public:
  Number( T value ) : m_value( value )
  {
  }

  T value() const
  {
    return m_value;
  }

  void setValue( T value )
  {
    m_value = value;
  }

  Number<T>& operator=( T value )
  {
    m_value = value;
  }

  //  template <class T2>
  //  Number<T2>& operator=( const Number<T>& number )
  //  {
  //    m_value = number.value();

  //    return *this;
  //  }

private:
  T m_value;
};

typedef Number<int> Integer;
typedef Number<float> Float;
typedef Number<double> Double;

#endif // NUMBER_HPP

Перегрузка закомментированного оператора присваивания - это моя попытка сделать то, что я хочу, я подумал, что это может дать лучшее описание, чем то, что находится над фрагментом.

Я хочу иметь возможность делать то, что я хочу. следующее:

Float a(10);
Integer b(20);

a = b;

Где a тогда будет преобразован в int и получит значение b , но все равно будет экземпляром класса Номер .

Возможно ли? Вы можете мне помочь?

Заранее спасибо.

7
задан mkroman 29 November 2011 в 04:43
поделиться