This code works fine (D 2.x only):

class Test
{
  private int[int] _testMap;
  public ref int[int] testMap() {return _testMap;}
}

void main()
{
  Test test = new Test();
  test.testMap[0] = 1;
}

Note the "ref". Otherwise, a value is returned which is not modifiable. This will also fix test.array.length. Nothing wrong here, no creepy bad temporary property problems.

I suppose you could also try returning a pointer to an associative array (e.g. with &) in D 1.x.

-[Unknown]


flourish wrote:
Hi,

why does the following code not compile -- or how to declare a (usable)
property of an associative array field?

//////////////////////
class Test
{
  private int[int] _testMap;
  public int[int] testMap() {return _testMap;}
}


void main()
{
  Test test = new Test();
  test.testMap[0] = 1;
}
/////////////////

*** Error: test.testMap() is not an lvalue


Regards,
    flourish



Reply via email to