digitalmars.D.learn - Initializing multidimentional Array with a struct
- Chris Pons (25/25) Mar 31 2012 I'm trying to figure out how to initialize a multi-dimentional
- Chris Pons (20/20) Mar 31 2012 I also tried this, which gives an out of range error:
- =?UTF-8?B?QWxpIMOHZWhyZWxp?= (19/44) Mar 31 2012 Do you want to initialize with the default value of Node? Then it is as
- Chris Pons (3/58) Mar 31 2012 Yes sorry, I was looking to initialize to the default value of
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
}
}
}
Mar 31 2012
I also tried this, which gives an out of range error:
void InitializePathGraph()
{
PathGraph.length = mapWidth;
foreach( elem; PathGraph )
{
elem.length = mapHeight;
}
Node node;
for( int x = 0; x < mapWidth - 1; x++ )
{
for( int y = 0; y < mapHeight - 1; y++ )
{
PathGraph[x][y] = node;
}
}
}
This is really confusing me.
Mar 31 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
Mar 31 2012
Yes sorry, I was looking to initialize to the default value of node. Thank you for the help! On Saturday, 31 March 2012 at 21:59:50 UTC, Ali Çehreli wrote:On 03/31/2012 02:34 PM, Chris Pons wrote:I'm trying to figure out how to initialize amulti-dimentional arraywith a struct. I thought it would be straight forward, buti'm runninginto problems. I'm using nested for loops, and just settingthe currentindex to a blank version of my struct but that gives me thiserror:"Error: no [] operator overload for type Node". I didn't knowI neededto overload that operator, usually didn't need to in C++ asfar as Iremember. 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
Mar 31 2012









"Chris Pons" <cmpons gmail.com> 