くだすれDelphi(超初心者向け) Part5
■ このスレッドは過去ログ倉庫に格納されています
003231
NGNGtype
TMyObject = class constructor Create; virtual; end;
TMyObject2 = class(TMyObject) constructor Create; override; end;
TMyClass = class of TMyObject
function CreateObject(MyClass: TMyClass): TObject;
begin
Result := MyClass.Create;
end;
とするときvirtual/overrideがあればCreateObject(TMyObject), CreateObject(TMyObject2)は
それぞれ期待したインスタンスを生成できるが
なければ両方とも基底クラスであるTMyClassのインスタンスが生成されてしまう。
だから判断基準はクラス参照経由でコンストラクタが呼ばれる可能性があるかどうか。ということ。
実際にはclass of でクラス参照を定義したクラスのコンストラクタをvirtualにすればいい。
■ このスレッドは過去ログ倉庫に格納されています