Einzelnen Beitrag anzeigen

Dummbatz

Registriert seit: 11. Mär 2003
Ort: Wehr
14 Beiträge
 
Delphi 6 Enterprise
 
#1

Abstrakte Methode und optionale Parameter

  Alt 17. Okt 2006, 15:51
Hallo zusammen!

ich hab gerade ein interessantes Problem mit abstrakten Methoden. Ich kann es mir erklären aber ich finde keine Lösung.
Vielleicht kann mir jemand helfen:

Delphi-Quellcode:
unit UTypes;

interface

type
  TMyType = (mtAnton, mtBerta, mtCaesar);

  TBasis = class
    function GetMyType(AMyType: TMyType = mtAnton): string; virtual; abstract;
  end;

  TBerta = class(TBasis)
    function GetMyType(AMyType: TMyType = mtBerta): string; override;
  end;

implementation

function TBerta.GetMyType(AMyType: TMyType = mtBerta): string;
begin

  case AMyType of
    mtAnton: result := 'Anton';
    mtBerta: result := 'Berta';
    mtCaesar: result := 'Cäsar';
  end;

end;

end.
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  locObj: TBasis;
begin

  locObj := TBerta.Create;
  ShowMessage(locObj.GetMyType);
  locObj.Free;

end;
Ein Klick auf Button1 liefert mir "Anton".
Wäre locObj vom Typ TBerta bekäme ich "Berta".
Das ist soweit klar!

Jetzt bekomme ich locObj als Rückgabe einer Methode zurück. Es kann ein beliebiger Typ sein, der als Basisklasse TBasis hat, also ein TBerta, TCaesar und wie sie alle heissen.
Ich will bzw. MUSS aber trotzdem bei einem TBerta "Berta" bekommen wenn ich locObj.GetMyType aufrufe.

Wie kann ich das anstellen?

MfG Thomas.
Thomas
  Mit Zitat antworten Zitat