call to super trashes pointer?

Rene Zwanenburg via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Tue Feb 23 02:47:17 PST 2016


On Tuesday, 23 February 2016 at 09:16:08 UTC, Nicholas Wilson 
wrote:
> struct A
> {
> int blah;
> }
> class B
> {
>     A* a;
>     this(A* _a)
>     {
>         writeln(_a)
>         a =_a;
>     }
> }
>
> class C : B
> {
>     this(A* _a)
>     {
>         writeln(_a)
>         super(_a);
>     }
> }
> int main(string[] args)
> {
>         A a;
>         writeln(&a);
>         C c = new C(&a);
> }
>
> prints
> 7FFF56E787F8
> 7FFF56E787F8
> null
>
> ??? What is happening here?

I can't reproduce this. After making a few changes to get the 
code to compile (adding ; after the first two writeln's, and 
changing int main to void main), everything works as expected. 
Which compiler and version are you using?


More information about the Digitalmars-d-learn mailing list