Union Initialization

Ali Çehreli acehreli at yahoo.com
Wed Jan 31 06:09:52 UTC 2018


On 01/30/2018 07:33 PM, Rubn wrote:
> 
> Is there any way to initialize an array of unions with more than just 
> the first union type?
> 
> 
> struct A { float a; }
> struct B { uint b; }
> 
> union Test
> {
>      A a;
>      B b;
> }
> 
> Test[2] test =
> [
>      Test(A(1.0f)),
>      Test(B(10)), // ERROR
> ];
> 
> 
> AFAIK there's no way to specify to use D with an initializer:
> 
> Test test = { b: B(10) };

You can have explicit constructors:


union Test
{
     A a;
     B b;

     this(A a) {
         this.a = a;
     }

     this(B b) {
         this.b = b;
     }
}

Ali


More information about the Digitalmars-d-learn mailing list