Freigeben über


CAdapt Class

Diese Vorlage dient dazu, Klassen zu umschließen, die den Adressoperator so umdefinieren, dass eine andere als die Adresse des Objekts zurückgegeben wird.

template < 
   class T 
> 
class CAdapt

Parameter

  • T
    Der angepasste Typ.

Member

Öffentliche Konstruktoren

Name

Beschreibung

CAdapt::CAdapt

Der Konstruktor.

Öffentliche Operatoren

Name

Beschreibung

CAdapt::operator const T&

Gibt einen const-Verweis auf m_T zurück.

CAdapt::operator T&

Gibt einen Verweis auf m_T zurück.

CAdapt::operator <

Vergleicht ein Objekt des angepassten Typs mit m_T.

CAdapt::operator =

Weist m_T ein Objekt des angepassten Typs zu.

CAdapt::operator ==

Vergleicht ein Objekt des angepassten Typs mit m_T.

Öffentliche Datenmember

Name

Beschreibung

CAdapt::m_T

Die Daten, die angepasst werden.

Hinweise

CAdapt ist eine einfache Vorlage. Sie dient dazu, Klassen zu umschließen, die den Adressoperator (operator &) so umdefinieren, dass eine andere als die Adresse des Objekts zurückgegeben wird. Zu diesen Klassen gehören die ATL-Klassen CComBSTR, CComPtr und CComQIPtr sowie die Compilerklasse für die COM-Unterstützung _com_ptr_t. Alle diese Klassen definieren den Adressoperator neu, sodass er die Adresse eines ihrer Datenmember (BSTR bei CComBSTR und den Schnittstellenzeiger bei anderen Klassen) zurückgibt.

Die primäre Funktion von CAdapt besteht darin, den Adressoperator auszublenden, der durch die Klasse T definiert wird, und trotzdem die Eigenschaften der angepassten Klasse beizubehalten. CAdapt erfüllt diese Funktion. Sie enthält den öffentlichen Member m_T vom Typ T und definiert Konvertierungsoperatoren, Vergleichsoperatoren und einen Kopierkonstruktor, sodass Spezialisierungen von CAdapt als Objekte vom Typ T behandelt werden können.

Die Adapterklasse CAdapt ist nützlich, da einige Containerklassen erwarten, dass sie Adressen der in ihnen enthaltenen Objekte unter Verwendung des Adressoperators abrufen können. Die Neudefinition des Adressoperators kann diese Anforderung vereiteln. Das führt in der Regel zu Kompilierungsfehlern und verhindert, dass der nicht angepasste Typ im Zusammenhang mit Klassen verwendet werden kann, die lediglich erwarten, dass er funktioniert. CAdapt stellt eine Methode zur Umgehung solcher Probleme bereit.

Normalerweise verwenden Sie CAdapt, wenn CComBSTR-, CComPtr-, CComQIPtr- oder _com_ptr_t-Objekte in einer Containerklasse gespeichert werden sollen. Das war bei C++-Standardbibliothekscontainern vor der Unterstützung des C++11-Standards der Regelfall. C++11- Standardbibliothekscontainer funktionieren allerdings automatisch mit Objekttypen, die überladene operator&()-Operatoren aufweisen. Die Standardbibliothek erreicht dies durch die interne Verwendung von std::addressof() und ruft so die tatsächlichen Adressen von Objekten ab.

Anforderungen

Header: atlcomcli.h

Siehe auch

Weitere Ressourcen

ATL Class Overview