Freigeben über


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.

Mitglieder

Ö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_Tzurü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).

CAdaptDie 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.

Siehe auch

Klassenübersicht