struct opCall makes a nan

Bill Baxter dnewsgroup at billbaxter.com
Sun Mar 23 17:08:14 PDT 2008


dominik wrote:
> I'm confused by this:
> 
> struct vector3 {
> 
>   union {
>    struct { float x, y, z; };
>    struct { float r, g, b; };
>    struct { float cell[3]; };
>   };
> 
> }
> 
> struct plane {
> 
>   union {
>    struct { vector3 N; float D; };
>    struct { float cell[4]; };
>   };
> 
>   plane opCall() {
>    plane pl;
>    N.x = 0.0f; N.y = 0.0f; N.z = 0.0f;
>    D = 0.0f;
>    return pl;
>   };


Should be "static plane opCall".

> }
> 
> and when I do this:
> 
>  plane plane_test;
>  Stdout.formatln("{}", plane_test.N.x);
> 
> it prints out a nan, when it should be 0F, ofcourse - what am I doing wrong? 

Besides making the above a static opCall, you may also need to 
explicitly call it.

     auto plane = plane();

I don't think D calls it for you automatically.

--bb


More information about the Digitalmars-d-learn mailing list