www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - how to initialize an array of struct

reply westcity <westcity1973 hotmail.com> writes:
My code is as following:

struct Point {
        float x, y, z ;
};

int main ()
{
        Point[3] pts = [
                {1.0, 0.0, 0.0} ,
                {0.0, 1.0, 0.0} ,
                {0.0, 0.0, 1.0}
        ];

        return 0 ;
}

But, the compiler report "Error: array initializers as expressions are not
allowed".

Then, how do I initialize an array of struct ? 
Feb 12 2009
next sibling parent reply Frits van Bommel <fvbommel REMwOVExCAPSs.nl> writes:
westcity wrote:
 My code is as following:
 
 struct Point {
         float x, y, z ;
 };
 
 int main ()
 {
         Point[3] pts = [
                 {1.0, 0.0, 0.0} ,
                 {0.0, 1.0, 0.0} ,
                 {0.0, 0.0, 1.0}
         ];
 
         return 0 ;
 }
 
 But, the compiler report "Error: array initializers as expressions are not
allowed".
That message's pretty messed up: array initializers look like [1.0, 0.0, 0.0] in D.
 Then, how do I initialize an array of struct ? 
Replacing the middle lines with these works: Point(1.0, 0.0, 0.0) , Point(0.0, 1.0, 0.0) , Point(0.0, 0.0, 1.0)
Feb 12 2009
parent westcity <westcity1973 hotmail.com> writes:
Frits van Bommel дµ½:

 westcity wrote:
 My code is as following:
 
 struct Point {
         float x, y, z ;
 };
 
 int main ()
 {
         Point[3] pts = [
                 {1.0, 0.0, 0.0} ,
                 {0.0, 1.0, 0.0} ,
                 {0.0, 0.0, 1.0}
         ];
 
         return 0 ;
 }
 
 But, the compiler report "Error: array initializers as expressions are not
allowed".
That message's pretty messed up: array initializers look like [1.0, 0.0, 0.0] in D.
 Then, how do I initialize an array of struct ? 
Replacing the middle lines with these works: Point(1.0, 0.0, 0.0) , Point(0.0, 1.0, 0.0) , Point(0.0, 0.0, 1.0)
Thanks.
Feb 12 2009
prev sibling parent reply bearophile <bearophileHUGS lycos.com> writes:
westcity Wrote:
 But, the compiler report "Error: array initializers as expressions are not
allowed".
 Then, how do I initialize an array of struct ? 
Move the definition out of main (note that ; after the struct isn't required): struct Point { float x, y, z; } Point[3] pts = [{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}]; void main () {} Bye, bearophile
Feb 12 2009
next sibling parent reply Frits van Bommel <fvbommel REMwOVExCAPSs.nl> writes:
bearophile wrote:
 westcity Wrote:
 But, the compiler report "Error: array initializers as expressions are not
allowed".
 Then, how do I initialize an array of struct ? 
Move the definition out of main (note that ; after the struct isn't required): struct Point { float x, y, z; } Point[3] pts = [{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}]; void main () {}
The fact that *does* compile just makes the error message all the more crazy...
Feb 12 2009
parent torhu <no spam.invalid> writes:
On 12.02.2009 15:16, Frits van Bommel wrote:
 bearophile wrote:
  westcity Wrote:
  But, the compiler report "Error: array initializers as expressions are not
allowed".
  Then, how do I initialize an array of struct ?
Move the definition out of main (note that ; after the struct isn't required): struct Point { float x, y, z; } Point[3] pts = [{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}]; void main () {}
The fact that *does* compile just makes the error message all the more crazy...
It should compile inside of main if declared static. It's just the error message that's a bit off.
Feb 12 2009
prev sibling parent westcity <westcity1973 hotmail.com> writes:
bearophile дµ½:

 westcity Wrote:
 But, the compiler report "Error: array initializers as expressions are not
allowed".
 Then, how do I initialize an array of struct ? 
Move the definition out of main (note that ; after the struct isn't required): struct Point { float x, y, z; } Point[3] pts = [{1.0, 0.0, 0.0}, {0.0, 1.0, 0.0}, {0.0, 0.0, 1.0}]; void main () {} Bye, bearophile
It is perfect, thanks.
Feb 13 2009