package
クラスに保護属性を持つメンバー関数があり、それを同じパッケージの別のモジュールのサブクラスでオーバーライドしたいと考えています。dmd コンパイラは、非仮想関数をオーバーライドできないと叫びます。関数を作成するとpublic
、実際に機能します。
パッケージ関数が仮想ではないのはなぜですか?
コード例:
module test.A;
class A {
package void doSomething() {}
}
module test.B;
import test.A;
class B : A {
package override void doSomething() {} // ERROR! overriding a non-virtual function
}