Thema: Delphi Problem mit Vererbung

Einzelnen Beitrag anzeigen

Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#18

Re: Problem mit Vererbung

  Alt 3. Okt 2007, 10:17
Zitat von Muetze1:
Ein abstrakt virtueller Constructor ist nun schon wirklich recht speziell (ok, wird zZ nicht genutzt)
Naja, weil ich da leider nichts machen könnte

Zitat von Muetze1:
aber auch ein Overload bei der Add() Methode ist noch übrig, aber das tut auch nichts zur Sache.
Naja Funktionierte ja auch nicht vorher ohne ^^ Es lag daran, dass ich die Funktion ja mal überladen hatte

Zitat von Muetze1:
ABER: Du hast zwei unterschiedliche Definitionen von Sheet. Einmal in der Basis und einmal in einer Ableitung.
Naja Jeder Tab hat eine Instanz von TTabSheet...

Zitat von Muetze1:
Das recht komische dabei ist dabei, dass du unterschiedliche Klassen verwendest.
... wobei ja TSheet ein Nachfahre von TTabSheet ist! Deshalb habe ich angenommen, der schluckt das.

Zitat von Muetze1:
Dazu kommt noch, dass du die Instanz in der Ableitung erstellst aber in der Basis freigibst.
Naja Wenn ich den Tab freigebe, dann gebe ich auch das TabSheet dazu frei. Aber wenn ich das erstelle weiß ich nicht ob der Tab vom Typ "TTabSheet" oder vom Typ "TSheet" ist.

Zitat von Muetze1:
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).
Und warum kann man nicht einfach FSheet override;n ? Ist doch müll xD
Also werde ich wohl einer der einzigen Gemeinsamkeit entfernen
OBWOHL müsste es nicht gehen, wenn ich einfach den FSheet : TSheet entferne (und die Prozedur/Property) müsste es doch laufen Gleich mal ausprobieren xD

Zitat von Muetze1:
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.
Hört sich gut an ^^

Zitat von Muetze1:
Aber das du die alte Eigenschaft verdeckst und eine neue deklarierst, hättest du aber wirklich mal sagen können.
^^ Naja die IDE hat sich nicht beschwert xD

Zitat von Muetze1:
Schliesslich hat das ganze Problem nachweislich nichts virtual & | abstract zu tun.
Naja. Ich hatte auch im ersten Post geschrieben, dass es mir nicht nur um abstract &|| (solle das nicht eher so sein ^^) virtual geht.
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat