www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - Dynamic multi-dimensional arrays

reply Hoenir <mrmocool gmx.de> writes:
Having a small "problem" here:
(Tile is a struct)

Tile[][] tiles = new Tile[85][85];

gives me
Error: cannot implicitly convert expression (new 
Tile[85u][](cast(uint)85)) of type Tile[85u][] to Tile[][]

I'm trying to understand why that error occurs.
Jan 14 2009
parent reply Steve Schveighoffer <schveiguy yahoo.com> writes:
On Wed, 14 Jan 2009 20:32:48 +0100, Hoenir wrote:

 Having a small "problem" here:
 (Tile is a struct)
 
 Tile[][] tiles = new Tile[85][85];
 
 gives me
 Error: cannot implicitly convert expression (new
 Tile[85u][](cast(uint)85)) of type Tile[85u][] to Tile[][]
 
 I'm trying to understand why that error occurs.
D interprets a new expression with an array index as: new T[x] means create a new dynamic array of type T with x elements. Your T is interpreted as: Tile[85], i.e. a static array. it's not well known, but you can do this for what you want: Tile[][] tiles = new Tile[][](85, 85); -Steve
Jan 14 2009
parent Hoenir <mrmocool gmx.de> writes:
Steve Schveighoffer schrieb:
 D interprets a new expression with an array index as:
 
 new T[x]
 
 means create a new dynamic array of type T with x elements.  Your T is 
 interpreted as:
 
 Tile[85], i.e. a static array.
 
 it's not well known, but you can do this for what you want:
 
 Tile[][] tiles = new Tile[][](85, 85);
 
Thanks, that works :)
Jan 14 2009