Hallo,
ich bin eben in Turbo Delphi 2006 Pro darüber gestolpert, dass ich in Klasse B (Kind von A) nicht auf die protected-Felder einer an B übergebenen Variable vom Typ A zugreifen konnte. Code-Beispiel:
Unit 1:
Code:
type TA = class(TObject)
protected
myField : TObject;
end;
Unit 2:
Code:
type TB = class(TA)
procedure copyFrom(src : TA);
end;
...
procedure TB.copyFrom(src : TA);
begin
self.myField := src.myField;
end;
Das ist jetzt vielleicht eine philosophische Frage. Aber wisst ihr, warum der Zugriff auf src.myField nicht erlaubt ist? Meines Erachtens nach sollte TB als Nachfahre von TA ja "Freund genug" sein, um auf die protected-Felder aller TA-Instanzen zugreifen zu können. So wie ja auch jede Instanz einer Klasse auf die private-Felder aller anderen Instanzen gleichen Typs zugreifen kann.