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.
template <
class T
>
class CAdapt
Paramètres
- T
Type adapté.
Membres
Constructeurs publics
Nom |
Description |
---|---|
Constructeur. |
Opérateurs publics
Nom |
Description |
---|---|
Retourne une référence const à m_T. |
|
Retourne une référence à m_T. |
|
Compare un objet du type adapté à m_T. |
|
Assigne un objet du type adapté à m_T. |
|
Compare un objet du type adapté à m_T. |
Membres de données publics
Nom |
Description |
---|---|
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 toutes l'opérateur d'adresse afin de retourner l'adresse de l'un de leurs membres de données (BSTR dans le cas de CComBSTR, et un pointeur d'interface dans le cas des autres classes).
Le rôle principal de CAdapt est de masquer l'opérateur d'adresse défini par la classe T tout en conservant les caractéristiques de la classe adaptée. CAdapt remplit ce rôle en dé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 afin d'autoriser les spécialisations de CAdapt à être traitées comme si elles étaient 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 permet d'obtenir ce résultat en utilisant de façon interne std::addressof() pour obtenir les adresses réelles des objets.
Configuration requise
En-tête : atlcomcli.h