On 5/3/2009 3:44 AM, 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;}
     public void opIndexAssign(int val, int ndx){ _testMap[ndx] = val; }
}


testMap() is a getter and can only return the value it is designed to.
You must implement a setter to accomplish what you are trying to do.
Unfortunately I'm not sure how to do it with AAs so I'll leave the
details to someone that's a little smarter than I.

I think that maybe implementing opIndexAssign might do the trick though.
See modifications to Test and main().

void main()
{
   Test test = new Test();
     //test.testMap[0] = 1; // Error: getters cannot be assigned to
     test[0] = 1;
}
/////////////////

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


Regards,
     flourish




Reply via email to