![]() |
Funktion in übergeordneter Klasse aufrufen
Hallo,
Ich habe eine Klasse geschrieben, die unter Anderem eine Liste von Objekten verwaltet. Aus diesen Objekten heraus möchte ich eine Funktion der Elternklasse aufrufen. Gibts da ne Möglichkeit? Gruß Andreas |
Re: Funktion in übergeordneter Klasse aufrufen
Wenn du diese Klasse von der anderen Klasse abgeleitet hast, solltest du doch problemlos einfach die Methode aufrufen können. Schonmal probiert?
//Edit: Das ist ja unter anderem der Sinn von Vererbung :zwinker: |
Re: Funktion in übergeordneter Klasse aufrufen
Zitat:
Ich denke es ist eher wie ![]() |
Re: Funktion in übergeordneter Klasse aufrufen
Ah OK, dann hab ich "Elternklasse" wohl falsch interpretiert. Nach deiner Erklärung erkenne ich auch den anderen möglichen Aspekt der Frage :lol:
|
Re: Funktion in übergeordneter Klasse aufrufen
Hallo,
nee, nicht abgeleitet. Elvis hat recht. Es sind zwei unabhängige Klassen. Die eine Klasse (oben übergeordnet genannt) speichert eine Liste mit Instanzen der zweiten Klasse. Aus der zweiten Klasse heraus möchte ich eine Funktion der ersten Klasse aufrufen. Ich hoffe, ich habe mich jetzt klarer ausgedrückt. Den Artikel kenne ich! Habs leider nicht verstanden. :oops: Gruß Andreas |
Re: Funktion in übergeordneter Klasse aufrufen
ok, so würde es funktionieren
Delphi-Quellcode:
type
TElternKlasse = class(TObject) private fList: TList; //Liste mit den Instane von TKindKlasse procedure FCreateKind; [...] TKindKlasse = class(TObject) private fParent: TElternKlasse; public constructor Create(AElternKlasse: TElternKlasse); end; [...] procedure TElternKlasse.FCreateKind; var LKind: TKindKlasse; begin //Das Kind erzeugen und als Parameter den Parent (Self = Elternklasse) mitgeben LKind := TKindKlasse.Create(Self); //Kind in Liste einfügen fList.Add(LKind); end; [...] constructor TKindKlasse.Create(AElternKlasse: TElternKlasse); begin inherited Create; fParent := AElternKlasse; //Ab jetzt kannst du über "fParent" auf den Parent (Elternklasse) zugreifen end; [...] |
Re: Funktion in übergeordneter Klasse aufrufen
OK, habs verstanden.
Dem Konstruktor der Kind-Klasse wird ein Zeiger auf die Elternklasse mitgegeben, über den dann auf die Elternklasse zugegriffen werden kann. Gar nicht so schwer - wenn man weiss, wie's geht :) Danke! Gruß Andreas |
Re: Funktion in übergeordneter Klasse aufrufen
genau, korrekter Weise heißt es aber nicht "einen Zeiger auf die Elternklasse" sondern "einen Zeiger auf die Elterninstanz". Aber das ist nur Krümelkacken, habs bestimmt auch schon irgendwo falsch geschrieben.
|
Re: Funktion in übergeordneter Klasse aufrufen
Ja, war auch so gemeint.
Noch ne kleine Frage: Ich habe beide Klassen in verschiedenen Units programmiert. Die Unit der Kind-Klasse muss natürlich in der Uses-Klausel der Unit mit der Elternklasse erscheinen. Da ich in der Kindklasse die Elternklasse benötige, bekomme ich eine zirkuläre Unit-Referenz. Wie komme ich da raus? :gruebel: Gruß Andreas |
Re: Funktion in übergeordneter Klasse aufrufen
bei einem von beiden muss die Uses-Klausel dann in den implementation-Teil...allerdings kannst du dann die Klassendeklaration nicht mehr verwenden :gruebel:
ich glaube du kannst eine Art "Vordeklaration" machen, indem nur nur bekanntgibst, das es so eine Klasse gibt (type Elternklasse = class;) ohne eine richtige Deklaration, und dann die wirkliche Deklaration erst im implementation-Teil via uses includes.... bin mir aber nicht sicher... |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:08 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz