his() {internal = new Internal;}
alias internal this;
}
class Bar: Foo
{
void stuff() {"derived".writeln;}
}
void main(string[] args)
{
Foo f = new Bar;
f.stuff(); // "base", not "derived".
}
°
From what i've read, "virtual classes" respect the OOP principles.
On Thursday, 18 August 2016 at 02:55:49 UTC, Basile B. wrote:
On Thursday, 18 August 2016 at 02:51:48 UTC, Meta wrote:
On Thursday, 18 August 2016 at 00:49:49 UTC, Engine Machine
wrote:
https://en.wikipedia.org/wiki/Virtual_class
Can D do stuff like this naturally?
Yes, D's `alias this` feat
On Thursday, 18 August 2016 at 02:51:48 UTC, Meta wrote:
On Thursday, 18 August 2016 at 00:49:49 UTC, Engine Machine
wrote:
https://en.wikipedia.org/wiki/Virtual_class
Can D do stuff like this naturally?
Yes, D's `alias this` feature supports this.
https://dlang.org/spec/class.html#alias-thi
On Thursday, 18 August 2016 at 00:49:49 UTC, Engine Machine wrote:
https://en.wikipedia.org/wiki/Virtual_class
Can D do stuff like this naturally?
Yes, D's `alias this` feature supports this.
https://dlang.org/spec/class.html#alias-this
On Thursday, 18 August 2016 at 00:49:49 UTC, Engine Machine wrote:
https://en.wikipedia.org/wiki/Virtual_class
Can D do stuff like this naturally?
Not naturally. The ancestor must be specified for the inner
"virtual class":
°°°
class Foo
{
class Internal
https://en.wikipedia.org/wiki/Virtual_class
Can D do stuff like this naturally?