digitalmars.D - Not sure .. is this a bug?
- Downs (11/11) Jun 28 2007 import std.stdio;
- Frits van Bommel (3/17) Jun 28 2007 I'd have expected the compiler to give an error when trying to override
- nick (2/17) Jun 28 2007 Your code does not compile.
- downs (4/21) Jun 29 2007 Hm.
import std.stdio; class foo { int e; abstract const void bar(); } class bug: foo { void bar() { writefln("I NOW CHANGEZ TEH OBJECTS"); e=5; } } void main() { const(bug) okay=new bug; // okay.bar; fails as expected const(foo) Bug=cast(foo)okay; Bug.bar; // interestingly works. } From my POV, the Bug.bar is modifying data it shouldn't be able to modify, but then again, I'm rather new to the whole constness thing. So, is this a bug? -- downs
Jun 28 2007
Downs wrote:import std.stdio; class foo { int e; abstract const void bar(); } class bug: foo { void bar() { writefln("I NOW CHANGEZ TEH OBJECTS"); e=5; } } void main() { const(bug) okay=new bug; // okay.bar; fails as expected const(foo) Bug=cast(foo)okay; Bug.bar; // interestingly works. } From my POV, the Bug.bar is modifying data it shouldn't be able to modify, but then again, I'm rather new to the whole constness thing. So, is this a bug?I'd have expected the compiler to give an error when trying to override "const void bar()" with "void bar()" in 'bug'...
Jun 28 2007
Downs wrote:import std.stdio; class foo { int e; abstract const void bar(); } class bug: foo { void bar() { writefln("I NOW CHANGEZ TEH OBJECTS"); e=5; } } void main() { const(bug) okay=new bug; // okay.bar; fails as expected const(foo) Bug=cast(foo)okay; Bug.bar; // interestingly works. } From my POV, the Bug.bar is modifying data it shouldn't be able to modify, but then again, I'm rather new to the whole constness thing. So, is this a bug? -- downsYour code does not compile.
Jun 28 2007
nick Wrote:Downs wrote:Hm. Seeing as I wouldn't have posted it here if it didn't compile for me, how about a little more info? For example, what error did you get? What compiler version do you use? This is code for D 2.0, in case it wasn't clear from the use of const, so naturally it won't work on 1.0 compilers.. -- downsimport std.stdio; class foo { int e; abstract const void bar(); } class bug: foo { void bar() { writefln("I NOW CHANGEZ TEH OBJECTS"); e=5; } } void main() { const(bug) okay=new bug; // okay.bar; fails as expected const(foo) Bug=cast(foo)okay; Bug.bar; // interestingly works. } From my POV, the Bug.bar is modifying data it shouldn't be able to modify, but then again, I'm rather new to the whole constness thing. So, is this a bug? -- downsYour code does not compile.
Jun 29 2007