www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Union Initialization

reply Rubn <where is.this> writes:
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) };
Jan 30 2018
parent =?UTF-8?Q?Ali_=c3=87ehreli?= <acehreli yahoo.com> writes:
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
Jan 30 2018