stuck on opDiv / opBinary

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Sun Aug 30 11:01:06 PDT 2015


On Sunday, 30 August 2015 at 17:02:58 UTC, Spacen Jasset wrote:
> I have just added an opDiv to this class, but it doesn't seem 
> to pick it up.
> math/vector.d(30): Error: 'this /= mag' is not a scalar, it is 
> a Vector3
>
> I can't see why that is, becuase my opMul works in the same 
> place. Can anyone point out what I have done wrong?
>
> Class Matrix {
>
>     void normalise()
>     {
>         const float mag = magnitude();
>         if (mag) {
>             //this.scalarDivide(mag);
>             this /= mag; // Not work
>             this *= 1/mag; // Does work.
>
>         }
>     }
>
> //    Vector3 opBinary(string op)(Vector3 rhs) if (op=='/')
>     Vector3 opDiv(float scalar)
>     {
>         Vector3 v = this;
>         v.scalarDivide(scalar);
>         return v;
>     }
>
> }

Don't use opMul or opDiv etc, use opBinary

Could you provide a more complete example? It's hard to identify 
what the problem is from this snippet.


More information about the Digitalmars-d-learn mailing list