[Noob] Operator overloading - am I missing something?
Anders Runesson
anders at runesson.info
Mon May 8 07:54:38 PDT 2006
Hi there.
I'm converting some old C code to D, but I'm stumbling on this:
...
alias GLdouble Scalar;
...
class Vector {
private Scalar[4] data;
...
Vector opMult(Scalar s) {
...
}
Vector opDiv(Scalar s) {
return this * (1.0 / s); // Doesn't work
//return this.opMult(1.0 / s); Works as I expected
}
...
}
I am trying to overload the division operator, but I can't use the
multiplication operator I just overloaded(or at least thought I did).
The compiler says
vector.d(112): incompatible types for ((this) * (1 / cast(double)(s))): \
'bagle.math.vector.Vector' and 'double'
vector.d(112): 'this' is not an arithmetic type
and refuses to compile the code. The commented out line works fine.
Why is this? I thought this.opMult(s) and this * s were synonymous?
I suppose I'm missing something, but from just reading the spec I couldn't
figure it out.
Thanks
/Anders
More information about the Digitalmars-d-learn
mailing list