[ Thread Index | 
Date Index
| More lists.liballeg.org/allegro-developers Archives
] 
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
On Tuesday 13 August 2002 13:11, Vincent Penquerc'h wrote:
> It doesn't appear to me it achieves much here. Overloading
> can be useful sometimes, especially for operators, but there
> is no real advantage to having plenty of functions with the
> same name when it's not needed. So, I wanted to know whether
> this same name was needed, and if not, rename it to another
> name with a "fix" prefix.
Well, it could be useful in a template situation:
template<class T> class Angle {
    public:
        typedef T num_type;
    private:
        num_type _angle;
        Angle();
    public:
        template<class otherT> Angle(const Angle<otherT>&);
        num_type get_degrees();
        num_type get_radians();
        // here overloading comes into play
        num_type sin() { return sin(_angle); }
        num_type cos() { return cos(_angle); }
        // etc...
};
The overloaded function allows the template class to represent
fixed-point angles. In fact, template classes (such as the STL
containers) often have specifications such as:
 - the template argument must have copy constructor
 - some function f() must be defined for the template argument
 - etc.
Eric changed the constructors of the fix class to be explicit, thus
stopping implicit conversion and solving the problem.
Bye for now,
- --
Laurence Withers,  lwithers@xxxxxxxxxx
(GnuPG 04A646EA) http://www.lwithers.demon.co.uk/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.0.7 (GNU/Linux)
iD8DBQE9WSQgUdhclgSmRuoRAsGUAJ4mN/muNOJeedLK7IwWxGa+E/HQvQCgm/ut
/GCLJysg9vcArth1ybSLNxA=
=1dpt
-----END PGP SIGNATURE-----