www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - can you initialize a array of POD structs?

reply Chris Katko <ckatko gmail.com> writes:
````D
struct pair { float x, y;}

pair p[] = [[0, 0], [255, 255], [25,-25]]; //nope
````
Jun 18 2022
parent reply Adam D Ruppe <destructionator gmail.com> writes:
On Saturday, 18 June 2022 at 17:37:44 UTC, Chris Katko wrote:
 ````D
 struct pair { float x, y;}

 pair p[] = [[0, 0], [255, 255], [25,-25]]; //nope
 ````
An array of pair is `pair[]`, keep the brackets with the type. Then a struct literal is either: pair(0, 0) // using constructor syntax or in some select contexts (including this one): {0, 0} // using named literal syntax Therefore: pair[] p = [{0, 0}, {255, 255}, {25,-25}]; compiles here.
Jun 18 2022
parent Chris Katko <ckatko gmail.com> writes:
On Saturday, 18 June 2022 at 17:52:16 UTC, Adam D Ruppe wrote:
 On Saturday, 18 June 2022 at 17:37:44 UTC, Chris Katko wrote:
 ````D
 struct pair { float x, y;}

 pair p[] = [[0, 0], [255, 255], [25,-25]]; //nope
 ````
An array of pair is `pair[]`, keep the brackets with the type. Then a struct literal is either: pair(0, 0) // using constructor syntax or in some select contexts (including this one): {0, 0} // using named literal syntax Therefore: pair[] p = [{0, 0}, {255, 255}, {25,-25}]; compiles here.
Thanks!! One extra caveat for anyone who googles this. You can't use {0, 0} notation if the struct has constructors. Which make sense since you don't want people accidentally bypassing a constructor if it exists.
Jun 18 2022