E2080 Dispose 手続きはデストラクタが必要です (Delphi)

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

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

このエラーメッセージは Dispose へのパラメータリストの中で指定した識別子がデストラクタでないときに表示されます。


program Produce;

type
  PMyObject = ^TMyObject;
  TMyObject = object
  F: Integer;
  constructor Init;
  destructor Done;
  end;

constructor TMyObject.Init;
begin
  F := 42;
end;

destructor TMyObject.Done;
begin
end;

var
  P: PMyObject;

begin
  New(P, Init);
  (*...*)
  Dispose(P, Init);        (*<-- ここでエラーメッセージ*)
end.

{ このコードでは不注意から Dispose へコンストラクタを渡した }


program Solve;

type
  PMyObject = ^TMyObject;
  TMyObject = object
  F: Integer;
  constructor Init;
  destructor Done;
  end;

constructor TMyObject.Init;
begin
  F := 42;
end;

destructor TMyObject.Done;
begin
end;

var
  P: PMyObject;

begin
  New(P, Init);
  Dispose(P, Done);
end.

{ Dispose へデストラクタを渡すか,第 2 引数を削除すれば解決する }