E2076 このメソッドの呼び方はクラスメソッドの場合に限られます (Delphi)

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

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

インスタンスでなくクラス型を指定するだけで通常のメソッドを呼び出そうとしました。

それができるのはクラスメソッドとコンストラクタの場合だけで,通常のメソッドとデストラクタの場合はできません。


program Produce;

type
  TMyClass = class
  (*...*)
  end;
var
  MyClass: TMyClass;

begin
  MyClass := TMyClass.Create;  (*これでよい。コンストラクタ*)
  Writeln(TMyClass.ClassName); (*これでよい。クラスメソッド*)
  TMyClass.Destroy;            (*<-- ここでエラーメッセージ*)
end.

{ このコードは TMyClass 型そのものを破棄しようとしている }


program Solve;
type
  TMyClass = class
  (*...*)
  end;
var
  MyClass: TMyClass;

begin
  MyClass := TMyClass.Create;  (*これでよい。コンストラクタ*)
  Writeln(TMyClass.ClassName); (*これでよい。クラスメソッド*)
  MyClass.Destroy;             (*これでよい。インスタンスに対して呼び出される*)
end.

{ 実際には型そのものでなく型のインスタンスを破棄しなくてはならない }