Thema: Delphi Problem mit Vererbung

Einzelnen Beitrag anzeigen

Muetze1
(Gast)

n/a Beiträge
 
#17

Re: Problem mit Vererbung

  Alt 3. Okt 2007, 00:10
Moin!

Grundlegend ist zZ vieles recht komisch. Ein abstrakt virtueller Constructor ist nun schon wirklich recht speziell (ok, wird zZ nicht genutzt), aber auch ein Overload bei der Add() Methode ist noch übrig, aber das tut auch nichts zur Sache. ABER: Du hast zwei unterschiedliche Definitionen von Sheet. Einmal in der Basis und einmal in einer Ableitung. Das recht komische dabei ist dabei, dass du unterschiedliche Klassen verwendest. Dazu kommt noch, dass du die Instanz in der Ableitung erstellst aber in der Basis freigibst.

Und zu deinem NIL Problem: Du greifst auf fSheet zu, wobei du eine Variable vom Typ TTab nutzt. Dadurch greifst du auf den Typ von Sheet von TTab zu. Da du aber in der Ableitung einen neuen Typ definierst (und eine neue Variable) aber die Basisklasse nutzt zum Zugriff, bekommst du fSheet von der Basis TTab - und die ist natürlich nil (schliesslich initialisierst du es nicht in TTab). Wenn du nun den Typ nicht neu definieren würdest in der Ableitung, dann hättest du Sheet vererbt und dann wäre beim Zugriff über TTab auch die Instanz von TExplorerTab zu finden - es gibt schliesslich nur noch ein Tab.

Aber das du die alte Eigenschaft verdeckst und eine neue deklarierst, hättest du aber wirklich mal sagen können. Schliesslich hat das ganze Problem nachweislich nichts virtual & | abstract zu tun. Also: dein Weg ist wie beschrieben begehbar - ABER: einige dich auf einen Typ...

Live long and prosper, Locutus!
  Mit Zitat antworten Zitat