Partage via


CAdapt, classe

Ce modèle permet d'inclure dans un wrapper les classes qui redéfinissent l'opérateur d'adresse afin de retourner un autre élément que l'adresse de l'objet.

Syntaxe

template <class T>
class CAdapt

Paramètres

T
Type adapté.

Membres

Constructeurs publics

Nom Description
CAdapt ::CAdapt Constructeur .

Opérateurs publics

Nom Description
CAdapt ::operator const T& Retourne une const référence à m_T.
CAdapt ::operator T& Retourne une référence à m_T.
CAdapt ::operator < Compare un objet du type adapté à m_T.
CAdapt ::operator = Assigne un objet du type adapté à m_T.
CAdapt ::operator == Compare un objet du type adapté à m_T.

Membres de données publics

Nom Description
CAdapt ::m_T Données adaptées.

Notes

CAdapt est un modèle simple qui permet d'inclure dans un wrapper les classes qui redéfinissent l'opérateur d'adresse (operator &) afin de retourner un autre élément que l'adresse de l'objet. Parmi ces exemples de classes figurent les classes ATL CComBSTR, CComPtr et CComQIPtr, ainsi que la classe de prise en charge COM du compilateur, _com_ptr_t. Ces classes redéfinissent tous l’opérateur d’adresse pour retourner l’adresse de l’un de leurs membres de données (un BSTR dans le cas de CComBSTR, et un pointeur d’interface dans le cas des autres classes).

CAdaptle rôle principal consiste à masquer l’opérateur d’adresse défini par la classe T, mais à conserver les caractéristiques de la classe adaptée. CAdapt remplit ce rôle en tenant un membre public, m_T, de type T, et en définissant des opérateurs de conversion, des opérateurs de comparaison et un constructeur de copie pour permettre aux spécialisations d’être CAdapt traitées comme s’ils sont des objets de type T.

La classe d'adaptateur CAdapt est utile, car certaines classes de type conteneur sont censées être capables d'obtenir les adresses des objets contenus via l'opérateur d'adresse. La redéfinition de l’opérateur d’adresse peut confondre cette exigence, généralement en provoquant des erreurs de compilation et en empêchant l’utilisation du type non adapté avec les classes qui s’attendent à ce qu’il fonctionne « tout simplement ». CAdapt permet de contourner ces problèmes.

En règle générale, utilisez CAdapt lorsque vous souhaitez stocker des objets CComBSTR, CComPtr, CComQIPtr ou _com_ptr_t dans une classe de type conteneur. Ceci était le plus souvent nécessaire pour les conteneurs de bibliothèque standard C++ avant la prise en charge de la norme C++11. Toutefois, les conteneurs de bibliothèque standard C++11 fonctionnent automatiquement avec les types ayant un operator&() surchargé. La bibliothèque standard effectue cette opération en interne à l’aide de std ::addressof pour obtenir les véritables adresses des objets.

Spécifications

En-tête : atlcomcli.h

CAdapt ::CAdapt

Les constructeurs permettent à un objet adaptateur d’être construit par défaut, copié à partir d’un objet du type adapté ou copié à partir d’un autre objet adaptateur.

CAdapt();
CAdapt(const T& rSrc);
CAdapt(const CAdapt& rSrCA);
CAdapt(T&& rSrCA);  // (Visual Studio 2017)
CAdapt(CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)

Paramètres

rSrc
Variable du type adapté à copier dans l’objet adaptateur nouvellement construit.

rSrCA
Objet adaptateur dont les données contenues doivent être copiées (ou déplacées) dans l’objet adaptateur nouvellement construit.

CAdapt ::m_T

Contient les données en cours d’adaptation.

T m_T;

Notes

Ce public membre de données est accessible directement ou indirectement avec l’opérateur const T& et l’opérateur T&.

CAdapt ::operator const T&

Retourne une const référence au membre m_T, ce qui permet à l’objet adaptateur d’être traité comme s’il s’agissait d’un objet de type T.

operator const T&() const;

Valeur de retour

Référence const à m_T.

CAdapt ::operator T&

Retourne une référence au membre m_T, ce qui permet à l’objet adaptateur d’être traité comme s’il s’agissait d’un objet de type T.

operator T&();

Valeur de retour

Référence à m_T.

CAdapt::operator <

Compare un objet du type adapté à m_T.

bool operator<(const T& rSrc) const;

Paramètres

rSrc
Référence à l’objet à comparer.

Valeur de retour

Résultat de la comparaison entre m_T et rSrc.

CAdapt ::operator =

L’opérateur d’affectation affecte l’argument, rSrc, au membre de données m_T et retourne l’objet d’adaptateur actuel.

CAdapt& operator= (const T& rSrc);
CAdapt& operator= (T&& rSrCA); // (Visual Studio 2017)
CAdapt& operator= (CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)

Paramètres

rSrc
Référence à un objet du type adapté à copier.

rSrCA
Référence à un objet à déplacer.

Valeur de retour

Référence à l’objet actuel.

CAdapt ::operator ==

Compare un objet du type adapté à m_T.

bool operator== (const T& rSrc) const;

Paramètres

rSrc
Référence à l’objet à comparer.

Valeur de retour

Résultat de la comparaison entre m_T et rSrc.

Voir aussi

Vue d’ensemble de la classe