E2174 '%s' はプロパティとして宣言されていません (Delphi)

提供: RAD Studio
移動先: 案内検索

エラーと警告のメッセージ(Delphi) への移動

再宣言によってプロパティを別の可視性レベルまで引き上げようとしましたが,基本クラス内の <element> がプロパティとして宣言されていません。


program Produce;
(*$WARNINGS ON*)

  type
    Base = class
    protected
      Caption : String;
      Title : String;
      property TitleProp : string read Title write Title;
    end;

    Derived = class (Base)
    public
      property Title read Caption write Caption;
    end;

begin
end.

{ Derived.Title の再宣言はプロパティ Title の読み書きに使用するフィールドの変更とパブリックな可視性への引き上げを意図している。しかしプログラマがほんとうに使用しようとしたのは Title でなく TitleProp である }


program Solve;
(*$WARNINGS ON*)

  type
    Base = class
    protected
      Caption : String;
      Title : String;
      property TitleProp : string read Title write Title;
    end;

    Derived = class (Base)
    public
      property TitleProp read Caption write Caption;
      property Title : string read Caption write Caption;
    end;

begin
end.

{ このエラーの解決方法は 2 つある。1 つは再宣言するほんとうのプロパティを指定する方法で,これが最も一般的な方法と思われる。もう 1 つは Title の再宣言に見られるように,基本クラス内のフィールドと同じ名前で新しいプロパティを明示的に作成する方法である。この新しいプロパティは基本フィールドを隠すので,基本フィールドへ型キャストなしにアクセスできなくなる(メモ:警告をオンにしてある場合,Title を再宣言すると基本クラスのメンバーが再宣言によって隠されるという警告が発行される)}