V Mon, 01 Feb 2016 12:19:10 +0000 Namal via Digitalmars-d-learn <digitalmars-d-learn@puremagic.com> napsáno:
> 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. you can use this too: auto arr = new int[y][x];