表示: Delphi
C++
表示設定
E2147: プロパティ '%s' は基本クラスに存在しません (Delphi)
提供:RAD Studio XE2
エラーと警告のメッセージ(Delphi):インデックス への移動
コンパイラは開発者がプロパティを派生クラスの別の可視性レベルまで引き上げる意図であると判断しましたが,指定されたプロパティが基本クラス内に存在しません。
program Produce;
type
Base = class
private
a : Integer;
property BaseProp : integer read a write a;
end;
Derived = class (Base)
ch : Char;
property Alpha read ch write ch; (*ケース 1*)
property BesaProp; (*ケース 2*)
end;
begin
end.
{ このエラーには根本的な原因が 2 つある。1 つは型を指定せずに新しいプロパティを指定した場合で,通常これは新しい可視性レベルへの移動とは考えられない。もう 1 つは基本クラス内に存在するはずのプロパティを指定してコンパイラがそれを見つけられない場合で,最も可能性の高い原因は "BesaProp" のような単純なタイプミスである。2 番めの形態でもコンパイラは read 節か write 節が必要だというエラーを出力する
program Solve;
type
Base = class
private
a : Integer;
property BaseProp : integer read a write a;
end;
Derived = class (Base)
ch : Char;
public
property Alpha : Char read ch write ch; (*ケース 1*)
property BaseProp; (*ケース 2*)
end;
begin
end.
{ 最初の例ではプロパティの型を指定すれば解決する。2 番めの例ではプロパティ名のスペルをチェックすれば解決する }