表示: Object Pascal C++
表示設定

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

提供: Appmethod Topics
移動先: 案内, 検索

エラーと警告のメッセージ(Object Pascal):インデックス への移動

再宣言によってプロパティを別の可視性レベルまで引き上げようとしましたが,基本クラス内の <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 を再宣言すると基本クラスのメンバーが再宣言によって隠されるという警告が発行される)}

個人用ツール
他言語版