Property access to a struct that contains struct

Eugene Wissner via Digitalmars-d digitalmars-d at puremagic.com
Sun Feb 26 03:15:21 PST 2017


On Sunday, 26 February 2017 at 11:05:42 UTC, Guenter wrote:
> Hi,
>
> i do not understand where I am wrong in this code. I seems 
> there is a missing constructor, but i have no idea where.
>
>
> module main;
>
>
> import std.stdio;
>
>
> struct A_t
> {
>   int fvalue;
>
>
>   A_t opCall()
>   {
>     return this;
>   };
>
>   @property  int value () { return fvalue; }
>
>   @property void value (int avalue) { fvalue = avalue; }
> }
>
>
> struct B_t
> {
>   A_t  fext;
>
>
>   int opCall() { return ext.value; };
>
>
>   @property A_t  ext() { return fext; }
>
>   @property void ext(A_t aext) { fext = aext; }
> }
>
>
>
> void main()
> {
>   B_t   test;
>
>
>   test.ext.value = 9;
>   int t = test();
>
>   assert ( t == 9);   //  t  is always 0 instead of 9.
>
>
>   readln();
> }
>
>
> cu
> Guenter

It should be:
@property ref A_t  ext() { return fext; }

you return a copy of A_t and then change this copy instead of the 
real B_t member.


More information about the Digitalmars-d mailing list