Autor Beitrag
SilasZ
Hält's aus hier
Beiträge: 1



BeitragVerfasst: Sa 06.02.10 18:50 
Ich habe folgendes Problem:
Ich habe eine eigene Klasse erzeugt (ich nen sie jetzt mal eineklasse) und eine Klasse die von "eineklasse" abgeleitet wird(ich nen sie erbklasse). Die "erbklasse" hat noch mehr variablen als die "eineklasse". Jetzt will ich eine Prozedur schreiben der man ein object von "eineklasse" oder "erbklasse" übergibt(procedure eineprozedur(übergebenesobjekt: eineklasse)). Die Prozedur soll die Variablen der Klassen verändern (unter anderem auch Variablen von der "erbklasse").
Aber ich kann ja nicht schreiben übergebenesobjekt.variablevonerbklasse := irgendwas , weil übergebenesobjekt ja ein objekt von "eineklasse" ist.
Gibt es da eine Lösung oder habt ihr eine andere idee wie ich das machen könnte oder ein link der mir vielleicht weiterhilft.
Danke schon mal für die Antworten.

Es tut mir leid dass ich nicht die Suchfunktion genutzt habe, aber ich wusste nicht wonach ich suchen sollte.
elundril
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 3747
Erhaltene Danke: 123

Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
BeitragVerfasst: Sa 06.02.10 19:21 
Naja, eine Methode wäre eine Typüberprüfung:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
  if (aObject is EineKlasse) then
    (aObject as EineKlasse).Variable := Irgendwas
  else if (aObject is Erbklasse) then
    (aObject as Erbklasse).AndereVariable := Irgendwas;


Soweit ich aus meinem OOP-Skriptum aber noch weiß is das ein eher blödes Konstrukt. Nur hab ich leider Vergessen wie man es umgehen kann. :oops:

lg elundril

_________________
This Signature-Space is intentionally left blank.
Bei Beschwerden, bitte den Beschwerdebutton (gekennzeichnet mit PN) verwenden.
Hidden
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 2242
Erhaltene Danke: 55

Win10
VS Code, Delphi 2010 Prof.
BeitragVerfasst: Sa 06.02.10 19:33 
Hi :)

Überladende Methoden sind ja leider auch nicht möglich, da Erbklasse ja nicht über den Typ von Eineklasse unterscheidbar ist(umgekehrt natürlich schon).

Das Ganze riecht ja ziemlich nach Initialisierung. Kannst du die Methode vielleicht zu einer Methode von Eineklasse machen, und sie dann in Erbklasse mittels 'override;' ergänzen(+inherited-Aufruf nicht vergessen)? Eventuelle Fremdklassen dann dazu nochmal ableiten, um den Code nicht umschreiben zu müssen.+

lg,

_________________
Centaur spears can block many spells, but no one tries to block if they see that the spell is a certain shade of green. For this purpose it is useful to know some green stunning hexes. (HPMoR)