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 |
---|---|
O construtor. |
Operadores Públicos
Name |
Descrição |
---|---|
Retorna uma referência const para m_T. |
|
Retorna uma referência para m_T. |
|
Compara um objeto do tipo adaptado com m_T. |
|
Atribui um objeto do tipo adaptado a m_T. |
|
Compara um objeto do tipo adaptado com m_T. |
Membros de Dados Públicos
Name |
Descrição |
---|---|
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