How to set array length for multidimensional static arrays

Namal via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Feb 1 04:19:10 PST 2016


On Monday, 1 February 2016 at 12:12:00 UTC, Jonathan M Davis 
wrote:
> On Monday, February 01, 2016 11:15:40 Namal via 
> Digitalmars-d-learn wrote:
>> Sorry guys that I didn't express myself well. I also mixed 
>> some stuff up. What I wanted to ask is this, in c++ this is 
>> valid
>>
>>   int x = 3;
>>   int y = 10;
>>   int arr [x][y];
>>
>> x,y are known at the compile time and arr is a static array. I 
>> can't do that in D so what is the best way to declare an array 
>> of that size?
>
> If x and y are known at compile time, then you can declare a 
> static array using them for dimensions. e.g.
>
>     enum x = 3;
>     enum y = 10;
>     int[y][x] arr;
>
> But x and y must be something that it is evaluated by the 
> compiler at compile time - e.g. an enum or a static variable. A 
> local variable that just so happens to be directly initialized 
> (like in your example) won't work.
>
> If x and y are _not_ known at compile time, then you can't use 
> the to declare a static array. You'll have to use a dynamic 
> array. e.g.
>
>     auto arr = new int[][](x, y);
>
> - Jonathan M Davis

Thanks alot, I didn't know that way with new.


More information about the Digitalmars-d-learn mailing list