サブクラスで opDispatch をオーバーライドする方法はありますか? 私が実際にやりたいことは、スーパークラスを静的型として変数を渡すことですが、これにより、opDispatch への呼び出しがそのサブ型 (動的型) にリダイレクトされます。
基本的に、このコードで「Super」ではなく「Sub」を出力したいのです。
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でよさそうですよね?)