Unterstützung von __property implements für C++Builder

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu C++-Spezifikation - Index


C++Builder führt das Attribut implements für das Schlüsselwort__property ein. Das Attribut implements ermöglicht die effektive Implementierung von Interfaces ohne Mehrfachvererbung. In der Vergangenheit konnten auf TObject basierte Klassen Interfaces implementieren. Das Implementieren von Interfaces in C++ war jedoch im Vergleich zu Delphi aufwendig, hauptsächlich wegen der Art und Weise, wie die Mehrfachvererbung in C++ gehandhabt wird (siehe Interfaces implementieren: Delphi und C++).

Das Attribut implements unterstützt DAX:__property implements bietet für ActiveX die folgenden Vorteile:

  • Ermöglicht, dass eine C++-Klasse die von DAX (Delphi-ActiveX, das neue Framework für ActiveX in C++Builder XE) bereitgestellten unterstützenden ActiveX-Klassen verwenden kann.
  • Vereinfacht für ActiveX-Projekte von C++Builder XE den Übergang von ATL zu DAX.

Das Attribut implements des C++-Schlüsselwortes __property ermöglicht die Implementierung eines Interface, indem es als Attribut oder Feld einer Klasse angegeben wird. Diese Implementierung entspricht der Delphi-Direktive implements, die einer Klasse die Implementierung eines Interface durch Delegation an eine Eigenschaft ermöglicht.

In einer __property-Anweisung wird das Attribut implements, wie das Attribut __nodefault, an die letzte Stelle gesetzt.

Syntax von __property implements

Im Folgenden finden Sie die Syntax des Attributs implements des Schlüsselwortes __property:

 class TMyPersist: public TInterfacedObject
 {
   IPersist* FPersist;
 public:
   __property IPersist* Persist = {read=FPersist, write=FPersist, implements};
 };

Die Syntax enthält keine Initialisierung des Feldes FPersist. Der Klassenkonstruktor kann FPersist mit einer unterstützenden DAX-Klasse für IPersist initialisieren.

Als Reaktion auf das Attribut implements nimmt der C++-Compiler das Interface (in diesem Fall IPersist) in die InterfaceTable von RTTI für TMyPersist (und das Offset des Feldes FFooBar) auf.

Hinweis: Das Attribut __property implements kann nur für Felder, nicht für Zugriffsmethoden (Getter und Setter) eingesetzt werden.

Ein vollständiges Codebeispiel finden Sie unter Interfaces implementieren: Delphi und C++.


Siehe auch