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