Dan wrote:
Hi everyone,
is there anyway to do this with operators overloading? :
class Tester
{
double x = 0.0;
double opBinary(string op:"+")(double value)
{
return x+value;
}
Tester opBinary(string op:"+")(Tester other)
{
Tester ret;
ret.x += other.x;
return ret;
}
}
int main(char[][] args)
{
Tester t1 = new Tester;
Tester t2 = new Tester;
t1.x = 1.0;
t2.x = 2.0;
Tester t3;
t3 = t1+t2;
assert (t3.x = 3.0);
return 0;
}
Thanks,
Dan
Functions can not be overloaded by return type alone; so I took the one
that returned double out.
We are dealing with a Tester class, and it makes sense to me to stay in
this type. When necessary, we can provide a conversion function that
returns a double value.
I've corrected a couple of errors, introduced a constructor, and came up
with this:
class Tester
{
double x = 0.0;
this(double x)
{
this.x = x;
}
Tester opBinary(string op:"+")(const Tester other) const
{
return new Tester(x + other.x);
}
}
int main(char[][] args)
{
Tester t1 = new Tester(1.0);
Tester t2 = new Tester(2.0);
Tester t3 = t1 + t2;
assert (t3.x == 3.0);
return 0;
}
Ali