Partilhar via


Classe de CAdapt

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

template < 
   class T 
> 
class CAdapt

Parâmetros

  • T
    O tipo adaptado.

Membros

Construtores Públicos

Name

Descrição

CAdapt::CAdapt

O construtor.

Operadores Públicos

Name

Descrição

Const T& de CAdapt::operator

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.

== De CAdapt::operator

Compara um objeto do tipo adaptado com m_T.

Membros de Dados Públicos

Name

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 (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

Consulte também

Outros recursos

Visão geral da classe de ATL