Initializing multidimentional Array with a struct

Ali Çehreli acehreli at yahoo.com
Sat Mar 31 14:59:49 PDT 2012


On 03/31/2012 02:34 PM, Chris Pons wrote:
 > I'm trying to figure out how to initialize a multi-dimentional array
 > with a struct. I thought it would be straight forward, but i'm running
 > into problems. I'm using nested for loops, and just setting the current
 > index to a blank version of my struct but that gives me this error:
 > "Error: no [] operator overload for type Node". I didn't know I needed
 > to overload that operator, usually didn't need to in C++ as far as I
 > remember.
 >
 > struct Node
 > {
 > bool walkable;
 > vect2 position;
 > int xIndex, yIndex;
 > Node*[4] connections;
 > }
 >
 > void InitializePathGraph()
 > {
 > for( int x = 0; x < mapWidth; x++ )
 > {
 > for( int y = 0; y < mapHeight; y++ )
 > {
 > Node node;
 > PathGraph[x][y] = node;// ERROR
 > }
 > }
 > }
 >
 >

Do you want to initialize with the default value of Node? Then it is as 
easy as the following:

import std.stdio;

struct Node
{}

void main()
{
     Node[2][3] a;       // fixed-length of fixed-length
     Node[][] b = new Node[][](2, 3);  // slice of slice

     writeln(a);
     writeln(b);
}

The output:

[[Node(), Node()], [Node(), Node()], [Node(), Node()]]
[[Node(), Node(), Node()], [Node(), Node(), Node()]]

Please note the different meanings of 2 and 3 for the fixed-length array 
and the new expression: lines and rows are swapped!

Ali



More information about the Digitalmars-d-learn mailing list