AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

TInterfacedObject Vererbung

Ein Thema von Treffnix · begonnen am 18. Okt 2005 · letzter Beitrag vom 18. Okt 2005
 
Benutzerbild von Treffnix
Treffnix

Registriert seit: 25. Jun 2003
Ort: AC
740 Beiträge
 
Delphi 7 Professional
 
#1

TInterfacedObject Vererbung

  Alt 18. Okt 2005, 14:29
Hallo,

ich habe nicht viel Erfahrung mit TInterfacedObjects. Gibts da was, was ich wissen müsste?

Folgendes Problem, ich habe habe eine Ableitung von TInterfacedobject und eine Ableitung der Ableitung.

Ungefähr dieses Schema:

Delphi-Quellcode:

TMyBaseObject = class;

TMyBaseClass = class of TMyBaseObject;

TMyBaseObject = class( TInterfacedObject, TMyInterface );
....
public
  Constructor Create;
  Destructor Destroy; override;
End;

TMyChildObject = class( TMyBaseObject );
...
public
  Constructor Create;
  Destructor Destroy; override;
  Procedure DoSomething;
End;

...

Constructor TMyChildObject.Create;
Begin
  Inherited;
  DoSomething;
End;
Soweit, so schlecht. Nun habe ich eine TClasslist, in der ich eine Reihe ( derzeit nur 1 ) Ableitungen von TMyBaseObject ( in diesem Fall TMyChildObject ) verwalte. Über diese TClasslist versuche ich TMyChildObject zu erstellen.

Delphi-Quellcode:
Function GetInterface( i: Integer ): TMyInterface;
Begin
  Result := TMyBaseClass( Classlist[i] ).Create
End;
Das funktioniert auch soweit prima. Er erstellt das richtige Objekt, alle funktionen sind verfügbar. Das einzige Problem, das ich habe, ist, dass er in der Funktion GetInterface in den Constructor von TMyBaseObject läuft und nicht ( wie eigentlich von mir erwartet ) in den von TMyChildObjekt. Alles andere funktioniert wie gesagt wunderbar. Selbst wenn ich im Constructor von TMyBaseObject eine Funktion aufrufe, die die Ableitung auch bietet, läuft das Programm vom Constructor der Basis in die Funktion der richtigen Ableitung.

Wo liegt mein Fehler?

//edit:

Achso, fast vergessen und könnte auch ein Grund sein:

TMyChildObject ist in einer anderen Unit deklariert als TMyBaseObject. Die Classlist befindet sich allerdings in der Unit von TMyBaseObject. Die Unit von TMyChildObject ist nicht in der uses von TMyBaseObject.

//edit²: override ergänzt. ( s. Bernhard Geyer )
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:40 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