Single "alias this"
Deokjae Lee
asitdepends at gmail.com
Sun Jul 25 07:45:37 PDT 2010
Thank you for the reply.
Actually I tested a code like this.
//interfaces first, base class last
class Foo : I1, I2, Base {}
This doesn't compile.
I didn't know the order of base class and interfaces matter.
> As for alias this, it's not about dynamic polymorphism like class
> inheritance. All it does is forward unresolved method calls to the alias
> this'ed member.
I'm reading TDPL and it says "alias this" in a relation with multiple
subtyping. Polymorphism can be achieved using a nested class extending
the base class and implicit conversion. So, I can't get the role of the
"alias this" differentiated from inheritance.
And...
import std.stdio;
class A {
void func() {
writeln("A");
}
}
class B : A {
override void func() {
writeln("B");
}
}
class C {
private B b;
alias b this;
this() {
b = new B();
}
}
void main() {
C c = new C();
c.func();
A a = c;
a.func();
}
The output is the following.
B
zsh: segmentation fault ./Test3
Hmm... Are the last two lines of main illegal?
More information about the Digitalmars-d-learn
mailing list