В следующем коде я ожидаю, что результат будет
B
C
Но, к сожалению, достаточно, что это
A
C
Есть ли что-то, что я могу сделать, чтобы заставить его вести себякак я ожидал?И почему это происходит в первую очередь?
Я смирился с определением шаблонов микшинов stuff
и смешиванием их с каждым классом, который переопределяет запись, что решает проблему, но является отвратительным взломом 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();
}