Is this a operator overloading bug?

David Medlock noone at nowhere.com
Thu Jan 11 04:46:07 PST 2007


Tim Fang wrote:
>     I am very new to D and I am trying to implement a Vector3 struct, please 
> take a look at the code below, why the output is "nananan"? I use dmd 1.00.
> 
> --code---------------------
> import std.stdio;
> 
> void main()
> {
>  Vector3 a;
>  a.set(1,1,1);
>  a = a*2;
>  writefln(a.x, a.y, a.z);
> }
> 
> 
> struct Vector3
> {
>  float x,y,z;
> 
>  // constructor
>  void set(float _x, float _y, float _z)
>  {
>   x = _x;
>   y = _y;
>   z = _z;
>  }
> 
>  Vector3 opMul(float s)
>  {
>   Vector3 ret;
>   ret.x = x*s;
>   ret.y = y*s;
>   ret.z = z*s;
>   return ret;
>  }
> } 
> 
> 

Its not a bug, you didn't initialize the x,y and z members of Vector3.

try:

struct Vector3
{
   float x =0, y =0, z =0;
...
}

-DavidM



More information about the Digitalmars-d mailing list