Le souci, c'est qu'il faut ajouter à notre classe de nombres forts tous les opérateurs généralement présents sur les nombres, et il y en a un paquet. Heureusement, vive la Boost Operators Library vient à notre rescousse, en déduisant tout un tas d'opérateurs à partir d'une liste restreinte à implémenter.
template<typename D, typename T>
class Number : boost::operators<Number<D, T> >
{
public:
Number();
Number(const Number & n);
Number(const T & value);
bool operator<(const Number & n) const;
bool operator==(const Number & n) const;
Number & operator+=(const Number & n);
Number & operator-=(const Number & n);
Number & operator*=(const Number & n);
Number & operator/=(const Number & n);
Number & operator%=(const Number & n);
Number & operator|=(const Number & n);
Number & operator&=(const Number & n);
Number & operator^=(const Number & n);
Number & operator++();
Number & operator--();
T getValue() const;
private:
T m_value;
};
Et avec ceci, les opérations +, -, *, / et les autres sont toutes définies gentiment.
Aucun commentaire:
Enregistrer un commentaire