Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#4

Re: Frage beim Vererben, wenn der Datentyp sich ändert.

  Alt 4. Mai 2009, 16:23
Zitat:
Wenn ich jetzt mit einer Instanz(vom Typ TAVLKnoten) eine Methode z.b. GetLeft aufrufen möchte, meckert der Compiler, da der Typ nicht von TAVLKnoten ist, sondern TKnoten.
Das ist auch korrekt so. Entweder du vererbst deine Getter oder du mußt beim Aufruf casten. Hier ein Beispiel für die Vererbung:
Delphi-Quellcode:
type
  TKnoten = class
  protected
    left: TKnoten;
    right: TKnoten;
    Data: Integer;
  public
    [...]
    function GetLeft:TKnoten;
    function GetRight:TKnoten;
    function GetData:Integer;
  end;

type
  TAVLKnoten = class(TKnoten)
    protected
      balance: integer;
    public
      procedure setBalance(B: Integer); virtual;
      [...]
      function GetLeft:TAVLKnoten;
  end;


....
function TAVLKnoten.GetLeft : TAVLKnoten;
begin
  Result := TAVLKnoten(inherited GetLeft);
end;
Diese Variante hat den Vorteil, dass du im weiteren Verwendungscode kein Type-Casting mehr machen musst. Spart Zeit und Probleme. Ich konstruiere so übriegens alle meine speziellen Objektlisten. Hab mir dafür ein Template angelegt und braucht somit beim proggen 3 Sekunden.

Gruß oki
42
  Mit Zitat antworten Zitat