So, ich versuche mich auch mal dran...
Delphi-Quellcode:
type
TModus = (Sub1, Sub2);
TBase = class
public
constructor Create; overload; virtual; abstract;
class function Create(Modus:TModus):TBase; overload; virtual;
end;
TSub1 = class(TBase)
public
constructor Create; override;
end;
TSub2 = class(TBase)
public
constructor Create; override;
end;
:
:
{ TBase }
class function TBase.Create(Modus:TModus): TBase;
begin
case Modus of
Sub1: Result:=TSub1.Create;
Sub2: Result:=TSub2.Create;
end;
end;
{ TSub1 }
constructor TSub1.Create;
begin
inherited;
end;
{ TSub2 }
constructor TSub2.Create;
begin
inherited;
end;
Aufruf...
Delphi-Quellcode:
procedure TForm.ButtonClick(Sender: TObject);
var Base:TBase;
begin
Base:=TBase.Create(Sub1);
ShowMessage(Base.ClassName);
Base:=TBase.Create(Sub2);
ShowMessage(Base.ClassName);
Base:=TBase.Create; // <-- löst einen "Abtrakten Fehler" aus
ShowMessage(Base.ClassName);
end;
Gruss
Thorsten