有什么方法可以覆盖子类中的 opDispatch 吗?我真正想要做的是传递一个以超类作为其静态类型的变量,但是它将对 opDispatch 的调用重定向到它的子类型(动态类型)。
基本上,我希望这段代码打印“Sub”而不是“Super”。
import std.stdio;
class Super
{
void opDispatch(string m)()
{
writeln("Super");
}
}
class Sub : Super
{
override void opDispatch(string m)()
{
writeln("Sub");
}
}
void main()
{
Super s = new Sub();
s.callingOpDispatch; // Writes "Super" instead of "Sub"
}
我傻眼了,因为我不能强制编译器通过使用抽象方法来查找方法覆盖(D 不允许抽象模板化方法)。
PS:有人可以创建标签 opDispatch 吗?(在我看来,这对 D 有好处?)