CAdapt-Klasse
Diese Vorlage wird verwendet, um Klassen zu umschließen, die dem Adressoperator neu definieren, um andere Werte als die Adresse des Objekts zurückzugeben.
template <
class T
>
class CAdapt
Parameter
- T
Der benutzerdefinierte Typ.
Mitglieder
Öffentliche Konstruktoren
Name |
Description |
---|---|
Der -Konstruktor. |
Öffentliche Operatoren
Name |
Description |
---|---|
Gibt einen Verweis auf constm_T zurück. |
|
Gibt einen Verweis auf m_T zurück. |
|
Vergleicht ein Objekt des angepassten Typs mit m_T. |
|
Weist m_T ein Objekt des angepassten Typs zu. |
|
Vergleicht ein Objekt des angepassten Typs mit m_T. |
Öffentliche Datenmember
Name |
Description |
---|---|
Die Daten, die angepasst werden. |
Hinweise
CAdapt ist eine einfache Vorlage, die verwendet wird, um Klassen zu umschließen, die dem Adressoperator (operator &) neu definieren um etwas Anderes als die Adresse des Objekts zurückzugeben.Beispiele für solche Klassen enthalten CComBSTR ATL, CComPtr und CComQIPtr-Klassen und die COM-Unterstützung des Compilerss-Klasse, _com_ptr_t.Diese Klassen definieren alle dem Adressoperator neu, um die Adresse von einer der Datenmember ( BSTR im - CComBSTR und des Schnittstellenzeigers bei anderen Klassen) zurückzugeben.
Die primäre Rolle von CAdapt ist, den Adressoperator auszublenden, der von der T-Klasse definiert wird, jedoch noch behält die Eigenschaften der angepassten Klasse bei.CAdapt erfüllt diese Rolle, indem es einen öffentlichen Member, m_T, vom Typ T enthält und indem die behandelt werden Operatoren, Vergleichsoperatoren und definiert einen Kopierkonstruktor, um Spezialisierungen von CAdapt zu ermöglichen, als ob sie Objekte des Typs T sind.
Die Adapterklasse CAdapt ist nützlich, da viele Containerklassen (wie die STL-Containerklassen) erwarten, um, die Adressen der enthaltenen Objekte mithilfe des address-of-Operators zu erhalten.Die Neudefinition des address-of-Operators kann diese Anforderung verwirren, Kompilierungsfehler in der Regel führen und die Verwendung des unadapted Typ mit diesem Container verhindern.CAdapt stellt eine Methode um diese Probleme bereit.
In der Regel verwenden Sie CAdapt, wenn Sie CComBSTR, CComPtr, CComQIPtr oder _com_ptr_t-Objekte in einem STL-Container wie list speichern möchten.Sie können Objekte dieser Typen so nicht speichern:
std::list< CComBSTR > m_List;
Stattdessen sollten Sie Adapterobjekte so speichern:
std::list< CAdapt< CComBSTR > > m_List;
Anforderungen
Header: atlcomcli.h