Partilhar via


Classe CAdapt

Observação

A Active Template Library (ATL) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Este template é usado para envolver classes que redefinem o operador address-of para devolver algo diferente do endereço do objeto.

Sintaxe

template <class T>
class CAdapt

Parâmetros

T
O tipo adaptado.

Membros

Construtores Públicos

Nome Description
CAdapt::CAdapt O construtor.

Operadores Públicos

Nome Description
CAdapt::operator const T& Devolve uma const referência a m_T.
CAdapt::operator T& Devolve uma referência a m_T.
CAdapt::operator < Compara um objeto do tipo adaptado com m_T.
CAdapt::operador = Atribui um objeto do tipo adaptado a m_T.
CAdapt::operator == Compara um objeto do tipo adaptado com m_T.

Membros de Dados Públicos

Nome Description
CAdapt::m_T Os dados a serem adaptados.

Observações

CAdapt é um template simples usado para envolver classes que redefinem o operador address-of (operator &) para devolver algo diferente do endereço do objeto. Exemplos dessas classes incluem as classes , CComPtr, e CComQIPtr do CComBSTRATL, e a classe de suporte ao compilador COM, _com_ptr_t. Estas classes redefinem todas o operador address-of para devolver o endereço de um dos seus membros de dados (um BSTR no caso de CComBSTR, e um ponteiro de interface no caso das outras classes).

CAdapto papel principal de é esconder o operador address-of definido pela classe T, mantendo ainda assim as características da classe adaptada. CAdapt cumpre esta função ao deter um membro público, m_T, do tipo T, e ao definir operadores de conversão, operadores de comparação e um construtor de cópia, permitindo que as especializações de CAdapt sejam tratadas como se fossem objetos do tipo T.

A classe CAdapt adaptador é útil porque algumas classes do tipo contentor esperam conseguir obter os endereços dos seus objetos contidos usando o operador address-of. A redefinição do operador address-of pode confundir este requisito, causando tipicamente erros de compilação e impedindo o uso do tipo não adaptado com classes que esperam que ele "simplesmente funcione". CAdapt oferece uma forma de contornar esses problemas.

Normalmente, usará CAdapt quando quiser armazenar CComBSTR, CComPtr, CComQIPtr, ou _com_ptr_t objetos numa classe do tipo container. Isto era mais frequentemente necessário para contentores da Biblioteca Padrão C++ antes do suporte para o Padrão C++11, mas os contentores da Biblioteca Padrão C++11 trabalham automaticamente com tipos que sobrecarregaram operator&(). A Biblioteca Padrão consegue isto usando internamente std::addressof para obter os endereços verdadeiros dos objetos.

Requerimentos

Cabeçalho: atlcomcli.h

CAdapt::CAdapt

Os construtores permitem que um objeto adaptador seja construído por defeito, copiado de um objeto do tipo adaptado ou copiado de outro objeto 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
Uma variável do tipo a ser adaptada para ser copiada no objeto adaptador recém-construído.

rSrCA
Um objeto adaptador cujos dados contidos deve ser copiado (ou movido) para o novo objeto adaptador construído.

CAdapt::m_T

Contém os dados que estão a ser adaptados.

T m_T;

Observações

Este public elemento de dados pode ser acedido direta ou indiretamente com o operador const T& e o operador T&.

CAdapt::operator const T&

Devolve uma const referência ao elemento m_T , permitindo que o objeto adaptador seja tratado como se fosse um objeto do tipo T.

operator const T&() const;

Valor de retorno

Uma const referência a m_T.

CAdapt::operator T&

Devolve uma referência ao elemento m_T , permitindo que o objeto adaptador seja tratado como se fosse um objeto do tipo T.

operator T&();

Valor de retorno

Uma referência a m_T.

CAdapt::operator <

Compara um objeto do tipo adaptado com m_T.

bool operator<(const T& rSrc) const;

Parâmetros

rSrc
Uma referência ao objeto a comparar.

Valor de retorno

O resultado da comparação entre m_T e rSrc.

CAdapt::operador =

O operador de atribuição atribui o argumento, rSrc, ao elemento de dados m_T e devolve o objeto adaptador atual.

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

Parâmetros

rSrc
Uma referência a um objeto do tipo adaptado a ser copiado.

rSrCA
Uma referência a um objeto a mover.

Valor de retorno

Uma referência ao objeto atual.

CAdapt::operator ==

Compara um objeto do tipo adaptado com m_T.

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

Parâmetros

rSrc
Uma referência ao objeto a comparar.

Valor de retorno

O resultado da comparação entre m_T e rSrc.

Consulte também

Visão geral da classe