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).
CAdapt
le 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.