On Sat, 06 Nov 2010 20:50:05 -0400 bearophile <bearophileh...@lycos.com> wrote:
> spir: > > > class SC { > > string f = "SC"; > > void show() {writeln(this.f);} > > } > > class C : SC { > > string f = "C"; > > } > > void main () { > > auto c = new C(); > > writeln(c.f) ; // OK, got "C" > > c.show() ; // expected "C", got "SC" > > > > // below test for type > > if (is(typeof(c) == C)) {writeln("type C");} else {writeln("type SC");} > > auto sc = new SC(); > > if (is(typeof(sc) == C)) {writeln("type C");} else {writeln("type SC");} > > } > > Java acts as D here: > http://ideone.com/LcAll > > C# requires the new keyword: > http://ideone.com/AVFvI > > > A D version that does as you desire: > > import std.stdio; > class SC { > string f_ = "SC"; > @property string f() { return f_; } > void show() { writeln(this.f); } > } > class C : SC { > string f_ = "C"; > @property override string f() { return f_; } > } > void main () { > auto c = new C(); > writeln(c.classinfo.name); > > auto sc = new SC(); > writeln(sc.classinfo.name); > > writeln(c.f); // "C" > c.show(); // "C" > } > > Bye, > bearophile I just realised that what I was asking for is in fact class-level fields -- common to all instances, instead of each instance having it locally. Denis -- -- -- -- -- -- -- vit esse estrany ☣ spir.wikidot.com