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