digitalmars.D.learn - call to super trashes pointer?
- Nicholas Wilson (32/32) Feb 23 2016 struct A
- Nicholas Wilson (4/36) Feb 23 2016 fwiw I can reassign the reference (in the classes) to a after B's
- Rene Zwanenburg (6/38) Feb 23 2016 I can't reproduce this. After making a few changes to get the
- Nicholas Wilson (4/45) Feb 23 2016 v2.067-devel-e431363
- Steven Schveighoffer (6/50) Feb 23 2016 This is not a released version. Using both 2.067.1 and 2.068.0, I get
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?
Feb 23 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?fwiw I can reassign the reference (in the classes) to a after B's call to super but still ...
Feb 23 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?
Feb 23 2016
On Tuesday, 23 February 2016 at 10:47:17 UTC, Rene Zwanenburg wrote:On Tuesday, 23 February 2016 at 09:16:08 UTC, Nicholas Wilson wrote:v2.067-devel-e431363 I "fixed" it see above.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?
Feb 23 2016
On 2/23/16 6:05 AM, Nicholas Wilson wrote:On Tuesday, 23 February 2016 at 10:47:17 UTC, Rene Zwanenburg wrote:This is not a released version. Using both 2.067.1 and 2.068.0, I get the expected behavior. There could have been a regression fixed between that version and the release, I suggest you try a released version: http://dlang.org/download.html#dmd -SteveOn Tuesday, 23 February 2016 at 09:16:08 UTC, Nicholas Wilson wrote:v2.067-devel-e431363 I "fixed" it see above.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?
Feb 23 2016