Can't modify this
H. S. Teoh via Digitalmars-d-learn
digitalmars-d-learn at puremagic.com
Mon Jun 30 09:29:01 PDT 2014
On Sat, Jun 28, 2014 at 06:39:33PM -0300, Ary Borenszweig via Digitalmars-d-learn wrote:
> On 6/28/14, 6:21 PM, H. S. Teoh via Digitalmars-d-learn wrote:
> >On Sat, Jun 28, 2014 at 05:40:19PM -0300, Ary Borenszweig via Digitalmars-d-learn wrote:
> >>This doesn't work:
> >>
> >>class Foo {
> >> this() {
> >> this = new Foo;
> >> }
> >>}
> >>
> >>Error: Cannot modify 'this'
> >>
> >>However you can do this:
> >>
> >>class Foo {
> >> this() {
> >> auto p = &this;
> >> *p = new Foo();
> >> }
> >>}
> >>
> >>It even changes the value of this!
> >>
> >>Should that compile? I mean, it's the same as modifying 'this'...
> >
> >I'd say, file an enhancement request on the bug tracker.
> >
> >However, there comes a point, where given enough indirections, it
> >would be infeasible for the compiler to figure out exactly where
> >everything points, and so you'll be able to circumvent the compiler
> >check somehow. If you're out to thwart the compiler, then eventually
> >you will succeed, but it begs the question, why?
> >
> >
> >T
>
> I think that if you disallow taking the address of `this`, then the
> problem is solved.
>
> This is not a big issue (more a curiosity). I just wanted to know what
> is the correct way to do in this case.
That depends on what you're trying to do. Why do you need to assign to
this?
T
--
Three out of two people have difficulties with fractions. -- Dirk Eddelbuettel
More information about the Digitalmars-d-learn
mailing list