Compartir a través de


CAdapt (clase)

Esta plantilla se utiliza para ajustar las clases que vuelven a definir el operador address-of para devolver algo distinto de la dirección del objeto.

Sintaxis

template <class T>
class CAdapt

Parámetros

T
El tipo adaptado.

Miembros

Constructores públicos

Nombre Descripción
CAdapt::CAdapt Constructor .

Operadores públicos

Nombre Descripción
CAdapt::operator const T& Devuelve una referencia const a m_T.
CAdapt::operator T& Devuelve una referencia a m_T.
CAdapt::operator < Compara un objeto de tipo adaptado con m_T.
CAdapt::operator = Asigna un objeto del tipo adaptado a m_T.
CAdapt::operator == Compara un objeto de tipo adaptado con m_T.

Miembros de datos públicos

Nombre Descripción
CAdapt::m_T Datos que se están adaptando.

Comentarios

CAdapt es una plantilla sencilla que se usa para ajustar las clases que vuelven a definir el operador address-of (operator &) para devolver algo distinto de la dirección del objeto. Algunos ejemplos de este tipo de clases son CComBSTR, CComPtr y CComQIPtr de ATL y la clase compatible con COM del compilador, _com_ptr_t. Todas estas clases vuelven a definir el operador address-of para devolver la dirección de uno de sus miembros de datos (BSTR en el caso de CComBSTR y un puntero de interfaz en el caso de las demás clases).

La función principal de CAdapt es ocultar el operador address-of definido por la clase T, aunque mantiene las características de la clase adaptada. CAdapt cumple esta función almacenando un miembro público, m_T, de tipo T y definiendo operadores de conversión, operadores de comparación y un constructor de copias para permitir que las especializaciones de CAdapt se traten como si fueran objetos de tipo T.

La clase CAdapt del adaptador es útil porque algunas clases de estilo contenedor esperan poder obtener las direcciones de sus objetos contenidos utilizando el operador address-of. La nueva definición del operador address-of puede frustrar este requisito, lo que normalmente produce errores de compilación e impide el uso del tipo no adaptado con clases que esperan que “simplemente funcione”. CAdapt proporciona un mecanismo para evitar estos problemas.

Normalmente, utilizará CAdapt cuando desee almacenar objetos CComBSTR, CComPtr, CComQIPtr o _com_ptr_t en una clase de estilo contenedor. Esta solía ser necesario en los contenedores de la biblioteca de C++ estándar antes de la compatibilidad con C++11 estándar, pero los contenedores de la biblioteca C++11 estándar trabajan automáticamente con tipos que tienen un operador operator&() sobrecargado. La biblioteca estándar logra esto utilizando internamente std::addressof para obtener las direcciones reales de los objetos.

Requisitos

Encabezado: atlcomcli.h

CAdapt::CAdapt

Los constructores permiten que un objeto de adaptador se construya de forma predeterminada, se copie de un objeto del tipo adaptado o se copie de otro objeto de adaptador.

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

Parámetros

rSrc
Variable del tipo en proceso de adaptación que se va a copiar en el objeto de adaptador recién construido.

rSrCA
Objeto de adaptador cuyos datos contenidos se deben copiar (o mover) al objeto de adaptador recién construido.

CAdapt::m_T

Contiene los datos en proceso de adaptación.

T m_T;

Comentarios

Se puede acceder a este public miembro de datos directamente o indirectamente con el operador const T& y el operador T&.

CAdapt::operator const T&

Devuelve una referencia const al miembro m_T, lo que permite que el objeto de adaptador se trate como si fuera un objeto de tipo T.

operator const T&() const;

Valor devuelto

Referencia const a m_T.

CAdapt::operator T&

Devuelve una referencia al miembro m_T, lo que permite que el objeto de adaptador se trate como si fuera un objeto de tipo T.

operator T&();

Valor devuelto

Referencia a una estructura m_T.

CAdapt::operator <

Compara un objeto del tipo adaptado con m_T.

bool operator<(const T& rSrc) const;

Parámetros

rSrc
Referencia al objeto que se va a comparar.

Valor devuelto

Resultado de la comparación entre m_T y rSrc.

CAdapt::operator =

El operador de asignación asigna el argumento, rSrc, al miembro de datos m_T y devuelve el objeto de adaptador actual.

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

Parámetros

rSrc
Referencia a un objeto del tipo adaptado que se va a copiar.

rSrCA
Referencia a un objeto que se va a mover.

Valor devuelto

Referencia al objeto actual.

CAdapt::operator ==

Compara un objeto del tipo adaptado con m_T.

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

Parámetros

rSrc
Referencia al objeto que se va a comparar.

Valor devuelto

Resultado de la comparación entre m_T y rSrc.

Consulte también

Información general sobre la clase