Passing an array by reference?

John Colvin via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Thu Jul 24 09:15:41 PDT 2014


On Thursday, 24 July 2014 at 16:06:00 UTC, Rishub Nagpal wrote:
>   1 class Test
>   2 {
>   3     int[][] array;
>   4     this(ref int[][] d)
>   5     {
>   6         array = d;
>   7     }
>   8
>   9 }
>  10
>  11 void main()
>  12 {
>  13     Test t = new Test([[1,1],[1,1]]);   //does not compile
>  14 }
>  15
>
>
> what is the best way to pass a literal ([[1,2],[3,4]]) by 
> reference? Is using ref the best way? I am still a bit fuzzy 
> with in/out and scope

Why do you need to pass the array by reference? D's slices are 
just windows on to memory, they don't copy the contents when you 
pass them around.

Anyway, if you do need ref, the problem is that [[1,1],[1,1]] is 
a temporary, an rvalue, and ref can't take rvalues.


More information about the Digitalmars-d-learn mailing list