Unterstützung von __property implements für C++Builder
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
- Interfaces implementieren: Delphi und C++
- __property (Schlüsselwort)
- Schlüsselwort-Erweiterungen in C++
- IInterface implementieren
- Aggregation
- Delphi-Interfaces
- C++Builder verwendet DAX für ActiveX und COM
- implements für die Delegation verwenden (Delphi)
- Klassenhierarchie in ActiveX-Steuerelementen (DAX)