Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
Hi zusammen!
Hab folgendes Problem:
Ich würde gerne von einer Klasse die einer andern Klasse untergeordnet ist auf die Funktionen der übergeordneten zugreiffen..
Ich mach mal ein Beispiel weil das nich so ganz leicht zu verstehen ist aus dem Satz befürchte ich ^^
ich hab z.B.:
Code:
type TKlasse1 = class
private
Klasse2: TKlasse2;
...
public
Procedure Test;
...
end;
Wie TKlasse2 aussieht ist hierbei egal.. und will dan in einem Codeteil von Klasse2 auf die Procedure Test von Klasse1 zugreiffen.. Habs mal mit ClassParent versucht.. sah dann inetwa so aus:
Code:
Procedure TKlasse2.Irgendwas
begin .. usw..
TKlasse1(ClassParent).Test
...
Aber das klappt nicht.. kommt immer irgendwo eine Zugriffsverletzung..
Wie könnte ich das anders machen ?
Danke schonma!
Cya
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Registriert: Di Feb 25, 2003 15:10 Beiträge: 147 Wohnort: Koblenz a. Rhein
So also habs bissel anders geregelt.. so wie du das beschrieben hast geht das nicht weil sich die deklarationen kreuzen ^^ hättest das mit TObject machen müssen und dann mit Klasse2(TObject).Test usw machen müssen..
Und so ähnlich hab ichs dann auch gemacht.. hab nur PObject = ^TObject benutzt um bissel datenschieberei zu sparen..
also sähe dann so aus..
Code:
type PObject = ^TObject
Klasse1 = class
private
pOwner: PObject
dings: Klasse2;
public
constructor.Create(wOwner: PObject);
procedure Muh;
end;
...
constructor Klasse1.Create(...);
begin
pOwner := wOwner;
end;
...
procedure Klasse2.Test(...);
begin
Klasse1(pOwner^).Muh;
end;
so inetwa.. habs das jetz ma so hingeschrieben kann also sein dasses nich ganz korrekt is aber vom Prinzip her sollte man erkennen wie ichs meine!
Cya!
_________________ mir fällt kein Spruch mehr ein für meine Signatur naja...
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Kann mich sniper nur anschließen. Klassen sind bereits Pointer und einen Pointer auf eine Klasse macht nur in sehr seltenen Fällen überhaupt sinn. Vor allem, wenn man bedenkt, dass du dann einen normalen Pointer hast und diesen erst beim Casten wieder zu einer Klasse machst. Wenn du dich dann vertust kann es schnell mal passieren, dass eine Instanz vermeindlich als etwas anderes ansprechen möchtest. Um Snipers beispiel mal etwas auszuholen.
Registriert: Sa Nov 13, 2004 11:00 Beiträge: 229 Wohnort: Steinhude
bei Pointern auf TObject muss man außerdem aufpassen, dass die variable, auf die man dann pointed auch bestehen bleibt (zB wenn man in einer Prozedur der Klasse auf self pointen lässt kann das böse ärger geben)
Mitglieder in diesem Forum: 0 Mitglieder und 3 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.