CAdapt-Klasse
Diese Vorlage dient dazu, Klassen zu umschließen, die den Adressoperator so umdefinieren, dass eine andere als die Adresse des Objekts zurückgegeben wird.
Syntax
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 . |
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
. Diese Klassen definieren alle die Adresse des Operators neu, um die Adresse eines ihrer Datenmember zurückzugeben (ein BSTR im Fall von CComBSTR
, und ein Schnittstellenzeiger im Fall der anderen Klassen).
CAdapt
Die Hauptrolle besteht darin, die von Klasse T definierte Operatoradresse auszublenden, aber dennoch die Merkmale der angepassten Klasse beizubehalten. CAdapt
erfüllt diese Rolle, indem sie ein öffentliches Mitglied, m_T, vom Typ T und durch Definieren von Konvertierungsoperatoren, Vergleichsoperatoren und einen Kopierkonstruktor, um die Behandlung von CAdapt
Spezialisierungen zu ermöglichen, als ob sie Objekte vom Typ T sind.
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 intern mithilfe von "std::addressof ", um die tatsächlichen Adressen von Objekten abzurufen.
Anforderungen
Kopfzeile: atlcomcli.h
CAdapt::CAdapt
Mit den Konstruktoren kann ein Adapterobjekt standardmäßig konstruiert, aus einem Objekt des angepassten Typs kopiert oder aus einem anderen Adapterobjekt kopiert werden.
CAdapt();
CAdapt(const T& rSrc);
CAdapt(const CAdapt& rSrCA);
CAdapt(T&& rSrCA); // (Visual Studio 2017)
CAdapt(CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
Parameter
rSrc
Eine Variable des Typs, der angepasst wird, um in das neu konstruierte Adapterobjekt kopiert zu werden.
rSrCA
Ein Adapterobjekt, dessen enthaltene Daten in das neu erstellte Adapterobjekt kopiert (oder verschoben werden sollen).
CAdapt::m_T
Enthält die anzupassenden Daten.
T m_T;
Hinweise
Auf dieses public
Datenmitglied kann direkt oder indirekt mit Operator const T& und Operator T&& zugegriffen werden.
CAdapt::operator const T&
Gibt einen const
Verweis auf das element m_T zurück, sodass das Adapterobjekt so behandelt werden kann, als wäre es ein Objekt vom Typ T.
operator const T&() const;
Rückgabewert
Ein const
Verweis auf m_T
.
CAdapt::operator T&
Gibt einen Verweis auf das m_T-Element zurück, sodass das Adapterobjekt so behandelt werden kann, als wäre es ein Objekt vom Typ T.
operator T&();
Rückgabewert
Ein Verweis auf m_T
.
CAdapt::operator <
Vergleicht ein Objekt des angepassten Typs mit m_T.
bool operator<(const T& rSrc) const;
Parameter
rSrc
Ein Verweis auf das zu vergleichende Objekt.
Rückgabewert
Das Ergebnis des Vergleichs zwischen m_T
und rSrc.
CAdapt::operator =
Der Zuordnungsoperator weist das Argument rSrc dem Datenmemm m_T zu und gibt das aktuelle Adapterobjekt zurück.
CAdapt& operator= (const T& rSrc);
CAdapt& operator= (T&& rSrCA); // (Visual Studio 2017)
CAdapt& operator= (CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
Parameter
rSrc
Ein Verweis auf ein Objekt des angepassten Typs, das kopiert werden soll.
rSrCA
Ein Verweis auf ein objekt, das verschoben werden soll.
Rückgabewert
Ein Verweis auf das aktuelle Objekt.
CAdapt::operator ==
Vergleicht ein Objekt des angepassten Typs mit m_T.
bool operator== (const T& rSrc) const;
Parameter
rSrc
Ein Verweis auf das zu vergleichende Objekt.
Rückgabewert
Das Ergebnis des Vergleichs zwischen m_T und rSrc.