0

目的: すべての派生クラスは、基本クラスからいくつかのデフォルトの式を継承する必要があります。デフォルトの式が派生クラスに対して有効でない場合は、再宣言する必要があります。

これは、ややばかげた最小限の例です。

package Pkg

  class Equations
    Real x;
  end Equations;

  class DefaultEquations
    extends Equations;
    equation
      x = 0.0;
  end DefaultEquations;

  class Base
    replaceable DefaultEquations equations extends Equations;
  end Base;

end Pkg;

model DuplicateEquations

    import Pkg.*;

    class CustomizedClass
      extends Base;
      redeclare Equations equations;
      equation
        equations.x = 3;
    end CustomizedClass;

    CustomizedClass customized;

end DuplicateEquations; 

不思議な理由で、デフォルトの方程式は上書きされません:

omc Test.mo Package.mo
class DuplicateEquations
  Real customized.equations.x;
equation
  customized.equations.x = 0.0;
  customized.equations.x = 3.0;
end DuplicateEquations;

なぜこうなった? x=0 の両方がx=3 生成されるのはなぜですか?

package宣言をコメントアウトすると、期待されるx=3式だけが得られます。

4

1 に答える 1

1

Adrian Pop が指摘したように、 component ではなく、型を再宣言する必要があります。

于 2012-04-16T14:25:37.680 に答える