在下面的代码中,我希望输出为
B
C
但令人沮丧的是
A
C
我能做些什么来让它按照我期望的方式行事吗?为什么这种行为首先发生?
我已经决定自己定义stuff
的mixin模板并将其混合到每个覆盖写入的类中,这样可以解决问题,但这是一个丑陋的黑客IMO。
import std.stdio : writeln;
class A {
void write() {
stuff();
}
void stuff()() {
writeln("A");
}
}
class B : A {
void stuff()() {
writeln("B");
}
}
class C : A {
void write() {
stuff();
}
void stuff()() {
writeln("C");
}
}
void main (string[] args) {
B b = new B();
b.write();
C c = new C();
c.write();
}