Compartilhar via


Classe CAdapt

Este modelo é usado para incluir classes que redefinem o operador address-of para retornar algo diferente do endereço do objeto.

Sintaxe

template <class T>
class CAdapt

Parâmetros

T
O tipo adaptado.

Membros

Construtores públicos

Nome Descrição
CAdapt::CAdapt O construtor .

Operadores públicos

Nome Descrição
CAdapt::operator const T& Retorna uma referência const para m_T.
CAdapt::operator T& Retorna uma referência para m_T.
CAdapt::operator < Compara um objeto do tipo adaptado com m_T.
CAdapt::operator = 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 Descrição
CAdapt::m_T Os dados que estão sendo adaptados.

Comentários

CAdapt é um modelo simples usado para incluir classes que redefinem o operador address-of (operator &) para retornar algo diferente do endereço do objeto. Exemplos dessas classes incluem as classes CComBSTR, CComPtr e CComQIPtr do ATL, e a classe de suporte ao COM do compilador, _com_ptr_t. Todas essas classes redefinem o operador address-of para retornar o endereço de um de seus membros de dados (um BSTR no caso de CComBSTR, e um ponteiro de interface no caso de outras classes).

A função primária de CAdapt é ocultar o operador address-of definido pela classe T, mas ainda manter as características da classe adaptada. CAdapt cumpre essa função armazenando um membro público, m_T, do tipo T, e definindo operadores de conversão, operadores de comparação e um construtor de cópia para permitir que especializações de CAdapt sejam tratadas como se fossem objetos do tipo T.

A classe de adaptador CAdapt é útil porque algumas classes do estilo contêiner esperam poder obter os endereços de seus objetos contidos usando o operador address-of. A redefinição do operador address-of pode confundir esse requisito, normalmente causando erros de compilação e evitando o uso do tipo não adaptado com classes que o esperam como “apenas trabalho”. CAdapt fornece uma maneira de contornar esses problemas.

Normalmente, você usará CAdapt quando quiser armazenar objetos CComBSTR, CComPtr, CComQIPtr ou _com_ptr_t em um o estilo de contêiner. Isso era o geralmente necessário para contêineres da biblioteca padrão C++ antes do suporte para o padrão C++11, mas os contêineres da biblioteca padrão C++11 funcionam automaticamente com tipos que sobrecarregaram operator&(). A Biblioteca Padrão obtém isso internamente usando std::addressof para obter os endereços verdadeiros dos objetos.

Requisitos

Cabeçalho: atlcomcli.h

CAdapt::CAdapt

Os construtores permitem que um objeto adaptador seja construído por padrão, copiado de um objeto do tipo adaptado ou copiado de outro objeto do 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 que está sendo adaptada para ser copiada no objeto do adaptador recém-construído.

rSrCA
Um objeto adaptador cujos dados contidos devem ser copiados (ou movidos) para o objeto do adaptador recém-construído.

CAdapt::m_T

Mantém os dados que estão sendo adaptados.

T m_T;

Comentários

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

CAdapt::operator const T&

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

operator const T&() const;

Valor de retorno

Uma referência const a m_T.

CAdapt::operator T&

Retorna uma referência ao membro m_T, permitindo que o objeto do 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 ser comparado.

Valor de retorno

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

CAdapt::operator =

O operador de atribuição atribui o argumento rSrc ao membro de dados m_T e retorna o objeto do 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 ser movido.

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 ser comparado.

Valor de retorno

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

Confira também

Visão geral da aula