On Monday, 9 April 2012 at 09:09:05 UTC, James Miller wrote:
* Eyyub <eyyub.pangeara...@gmail.com> [2012-04-09 01:14:32 +0200]:

Hello,

How can I rewrite the exemple 2 (http://pastebin.com/q50903Zh) in D
lang. ?
This source code doesn't work...why ?
http://paste.pocoo.org/show/wy1kDIpqTi2ApRuOxRRb/

Thx. :)


What you want is something like this:

    class Value(int M, int K, int S)
    {

        private
        {
            float _value;
        }

        public
        {
            this(float val)
            {
                _value = val;
            }

auto opBinary(string op : "/", int MO, int KO, int SO)(Value(MO, KO, SO) other) { return new Value!(M-MO, K-KO, S-SO)(_value/other.value);
            }

        }
    }

A Few notes:
1. This isn't tested, might not work, but thats where you should aim... 2. Operator overloading is implemented as a lowering (as far as I'm aware) the compiler emits a template instantiation of opBinary("/") for the type. That
   means that you can add on more template arguments.
3. Using `auto` means that the compiler works out the type, so you don't have to add extra template arguments to calculate the correct type.

Hope that helps.

--
James Miller

Ho, yeah it works !!! :D :D

http://paste.pocoo.org/show/ye7VXQHfLxsVM38bKyS6/

Thanks a lot !

Reply via email to