#ifndef __NUMBER_H__ #define __NUMBER_H__ template class Number { public: virtual T& operator-=(const T& rhs) = 0; virtual T& operator+=(const T& rhs) = 0; virtual T& operator*=(const T& rhs) = 0; virtual T& operator/=(const T& rhs) = 0; virtual T& operator=(const T& rhs) = 0; virtual const T operator+(const T& rhs) const = 0; virtual const T operator-(const T& rhs) const = 0; virtual const T operator*(const T& rhs) const = 0; virtual const T operator/(const T& rhs) const = 0; virtual bool operator==(const T& rhs) const = 0; virtual bool operator!=(const T& rhs) const = 0; virtual bool operator<(const T& rhs) const = 0; virtual bool operator<=(const T& rhs) const = 0; virtual bool operator>(const T& rhs) const = 0; virtual bool operator>=(const T& rhs) const = 0; virtual const T& operator++() = 0; // prefix virtual const T operator++(int) = 0; // postfix virtual const T& operator--() = 0; // prefix virtual const T operator--(int) = 0; // postfix }; #endif