Potential strategy for avoiding problems with copy of a struct (maybe??)

james.p.leblanc james.p.leblanc at gmail.com
Sun Aug 22 14:49:09 UTC 2021


On Sunday, 22 August 2021 at 14:35:48 UTC, Ali Çehreli wrote:
> On 8/22/21 6:03 AM, james.p.leblanc wrote:
>
> >      struct Foo {
> >          int a, b, c;
> >          Foo* myadd;
> >
> >          this(int a, int b, int c) {
> >              this.a = a;
> >              this.b = b;
> >              this.c = c;
> >              this.myadd = &this;
>
> As Matthias Lang mentioned, keeping a reference to itself makes 
> a struct object illegal in D. D sees structs as value types: It 
> is supposed that any copy can be used in place of another copy.
>
> Ali

Ali,

You highlight am important point that I have not been completely 
aware of.

Indeed, I did have a few "warning bells" going off in my brain 
when I began
typing "this.myadd = &this;" into my program ... but, it 
compiled, so I
continued (into the potential quicksand, admittedly!)

So, thanks for illuminating this issue for me.

Also, the "postblit" hint recently posted in this thread, may 
allow me
to procede along a safer path.

Kind Regards,
James



More information about the Digitalmars-d-learn mailing list