これはおそらく簡単な質問ですが、クラスのコンストラクタが確実に呼び出されるようにする方法を知りたいと思います。Delphi - クラスコンストラクタが呼び出されていることを確認する
私は次のコードをお持ちの場合:
type TMyObject = class(TObject)
public
constructor Create;override;
end;
implementation
constructor TMyObject.Create;override;
begin
inherited;
//do other instantiation
end;
をDelphiは、これを許可していません - 「静的メソッドをオーバーライドすることはできません」。
私は、オブジェクトが私のカスタムCreateコンストラクタを使用して作成され、祖先Createコンストラクタの呼び出しを禁止していることを確認します。
constructor Create(aName : String);overload;
が、プログラマは、潜在的祖先は()メソッドを作成して呼び出すことができます。
問題への私の現在のソリューションはこれのように一意に作成signaturedコンストラクタを定義することです。
おかげで静的メソッド、まだ破壊は仮想ですか?また、AfterConstruction、またはCreateを使用して、どのような方法がありますか? – Simon
あなたはそれについて別の質問をしたいと思うかもしれません。それはコメントの中で答えが「あまりにも多い」ものなのですから... –
私はとにかく試してみます - 任意のクラスを持つオブジェクトを作成するよりも、任意のクラス(例えば 'OwnsObject:= True'で' TObjectList')上でデストラクタを呼び出すほうがはるかに可能です。 –