Partilhar via


CComPtrBase Classe

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.

Esta classe fornece uma base para classes inteligentes de ponteiros usando rotinas de memória baseadas em COM.

Sintaxe

template <class T>
class CComPtrBase

Parâmetros

T
O tipo de objeto a ser referenciado pelo apontador inteligente.

Membros

Construtores públicos

Nome Description
CComPtrBase::~CComPtrBase O destruidor.

Métodos públicos

Nome Description
CComPtrBase::Advise Chame este método para criar uma ligação entre o CComPtrBaseponto de ligação de e o sumidouro de um cliente.
CComPtrBase::Attach Chame este método para assumir a posse de um ponteiro existente.
CComPtrBase::CoCreateInstance Chame este método para criar um objeto da classe associada a um ID de Classe ou ID de Programa especificado.
CComPtrBase::CopyTo Chame este método para copiar o CComPtrBase ponteiro para outra variável apontador.
CComPtrBase::Detach Chame este método para libertar a propriedade de um apontador.
CComPtrBase::IsEqualObject Chame este método para verificar se o especificado IUnknown aponta para o mesmo objeto associado ao CComPtrBase objeto.
CComPtrBase::QueryInterface Chame este método para devolver um ponteiro a uma interface especificada.
CComPtrBase::Release Chama este método para libertar a interface.
CComPtrBase::SetSite Chame este método para definir o sítio do CComPtrBase objeto para o IUnknown do objeto pai.

Operadores públicos

Nome Description
CComPtrBase::operator T* O operador do elenco.
CComPtrBase::operator ! O operador do NOT.
CComPtrBase::operator & O operador de endereço-of & .
CComPtrBase::operator * O operador do apontador * .
CComPtrBase::operator < O operador menos do que isso.
CComPtrBase::operator == O operador de igualdade.
CComPtrBase::operator -> O operador de apontar para membros.

Membros de dados públicos

Nome Description
CComPtrBase::p A variável membro dos dados do apontador.

Observações

Esta classe fornece a base para outros apontadores inteligentes que utilizam rotinas de gestão de memória COM, como CComQIPtr e CComPtr. As classes derivadas acrescentam os seus próprios construtores e operadores, mas dependem dos métodos fornecidos por CComPtrBase.

Requerimentos

Cabeçalho: atlcomcli.h

CComPtrBase::Advise

Chame este método para criar uma ligação entre o CComPtrBaseponto de ligação de e o sumidouro de um cliente.

HRESULT Advise(
    IUnknown* pUnk,
    const IID& iid,
    LPDWORD pdw) throw();

Parâmetros

pUnk
Um apontamento para o IUnknown.

iid
O GUID do ponto de ligação. Normalmente, este GUID é igual à interface de saída gerida pelo ponto de ligação.

pdw
Um apontador para o cookie que identifica de forma única a ligação.

Valor de retorno

Retornos S_OK do sucesso, ou um erro HRESULT em caso de falha.

Observações

Para obter mais informações, veja AtlAdvise.

CComPtrBase::Attach

Chame este método para assumir a posse de um ponteiro existente.

void Attach(T* p2) throw();

Parâmetros

p2
O CComPtrBase objeto assumirá a posse deste ponteiro.

Observações

Attach chama CComPtrBase::Release à variável membro existente CComPtrBase::p e depois atribui p2 a CComPtrBase::p. Quando um CComPtrBase objeto assume a posse de um ponteiro, chama Release automaticamente o ponteiro, o que elimina o ponteiro e quaisquer dados alocados se a contagem de referências do objeto chegar a 0.

CComPtrBase::~CComPtrBase

O destruidor.

~CComPtrBase() throw();

Observações

Liberta a interface apontada por CComPtrBase.

CComPtrBase::CoCreateInstance

Chame este método para criar um objeto da classe associada a um ID de Classe ou ID de Programa especificado.

HRESULT CoCreateInstance(
    LPCOLESTR szProgID,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

HRESULT CoCreateInstance(
    REFCLSID rclsid,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

Parâmetros

szProgID
Apontador para um ProgID, usado para recuperar o CLSID.

pUnkOuter
Se for NULL, indica que o objeto não está a ser criado como parte de um agregado. Se não-NULL, é um apontador para a interface do IUnknown objeto agregado (o controlador IUnknown).

dwClsContext
Contexto em que o código que gere o objeto recém-criado irá correr.

rclsid
CLSID associado aos dados e ao código que serão usados para criar o objeto.

Valor de retorno

Retornos S_OK do sucesso, ou REGDB_E_CLASSNOTREG, CLASS_E_NOAGGREGATION, CO_E_CLASSSTRING, ou E_NOINTERFACE do fracasso. Veja CoCreateClassInstance e CLSIDFromProgID para uma descrição destes erros.

Observações

Se a primeira forma do método for chamada, CLSIDFromProgID é usada para recuperar o CLSID. Ambas as formas chamam CoCreateClassInstanceentão .

Em builds de depuração, ocorrerá um erro de asserção se CComPtrBase::p não for igual a NULL.

CComPtrBase::CopyTo

Chame este método para copiar o CComPtrBase ponteiro para outra variável apontador.

HRESULT CopyTo(T** ppT) throw();

Parâmetros

ppT
Endereço da variável para receber o CComPtrBase apontador.

Valor de retorno

Retornos S_OK do sucesso, E_POINTER do fracasso.

Observações

Copia o CComPtrBase ponteiro para ppT. A contagem de referência na CComPtrBase::p variável membro é incrementada.

Um erro HRESULT será devolvido se ppT for igual a NULL. Em builds de depuração, ocorrerá um erro de asserção se ppT for igual a NULL.

CComPtrBase::Detach

Chame este método para libertar a propriedade de um apontador.

T* Detach() throw();

Valor de retorno

Devolve uma cópia do ponteiro.

Observações

Liberta a propriedade de um ponteiro, define a CComPtrBase::p variável membro de dados para NULL e devolve uma cópia do ponteiro.

CComPtrBase::IsEqualObject

Chame este método para verificar se o especificado IUnknown aponta para o mesmo objeto associado ao CComPtrBase objeto.

bool IsEqualObject(IUnknown* pOther) throw();

Parâmetros

pOther
O IUnknown * para comparar.

Valor de retorno

Retorna verdadeiro se os objetos forem idênticos, falso caso contrário.

CComPtrBase::operator !

O operador do NOT.

bool operator!() const throw();

Valor de retorno

Retorna true se o CComHeapPtr ponteiro for igual a NULL, false caso contrário.

CComPtrBase::operator &

O operador de endereço-of & .

T** operator&() throw();

Valor de retorno

Devolve o endereço do objeto apontado pelo CComPtrBase objeto.

CComPtrBase::operator *

O operador do apontador * .

T& operator*() const throw();

Valor de retorno

Devolve o valor de CComPtrBase::p; ou seja, um ponteiro para o objeto referenciado pelo CComPtrBase objeto.

Se o debug for construído, ocorrerá um erro de asserção se CComPtrBase::p não for igual a NULL.

CComPtrBase::operator ==

O operador de igualdade.

bool operator== (T* pT) const throw();

Parâmetros

pT
Um apontador para um objeto.

Valor de retorno

Retorna true se CComPtrBase e pT apontam para o mesmo objeto, false caso contrário.

CComPtrBase::operator ->

O operador apontador para membro.

_NoAddRefReleaseOnCComPtr<T>* operator->() const throw();

Valor de retorno

Devolve o valor da CComPtrBase::p variável membro de dados.

Observações

Use este operador para chamar um método numa classe apontada pelo CComPtrBase objeto. Em compilações de depuração, ocorrerá uma falha de asserção se o CComPtrBase membro de dados apontar para NULL.

CComPtrBase::operator <

O operador menos do que isso.

bool operator<(T* pT) const throw();

Parâmetros

pT
Um apontador para um objeto.

Valor de retorno

Retorna verdadeiro se o ponteiro gerido pelo objeto atual for menor do que o ponteiro com o qual está a ser comparado.

CComPtrBase::operator T*

O operador do elenco.

operator T*() const throw();

Observações

Devolve um ponteiro para o tipo de dado de objeto definido no template de classe.

CComPtrBase::p

A variável membro dos dados do apontador.

T* p;

Observações

Esta variável membro contém a informação do apontador.

CComPtrBase::QueryInterface

Chame este método para devolver um ponteiro a uma interface especificada.

template <class Q> HRESULT QueryInterface(Q
** pp) const throw();

Parâmetros

Q
O tipo de objeto cujo ponteiro de interface é necessário.

pp
Endereço da variável de saída que recebe o ponteiro de interface solicitado.

Valor de retorno

Retornos S_OK do sucesso, ou E_NOINTERFACE do fracasso.

Observações

Este método chama IUnknown::QueryInterface.

Em builds de depuração, ocorrerá um erro de asserção se pp não for igual a NULL.

CComPtrBase::Release

Chama este método para libertar a interface.

void Release() throw();

Observações

A interface é libertada e CComPtrBase::p está definida como NULL.

CComPtrBase::SetSite

Chame este método para definir o sítio do CComPtrBase objeto para o IUnknown do objeto pai.

HRESULT SetSite(IUnknown* punkParent) throw();

Parâmetros

punkParent
Um ponteiro para a IUnknown interface do pai.

Valor de retorno

Retornos S_OK do sucesso, ou um erro HRESULT em caso de falha.

Observações

Este método chama AtlSetChildSite.

Consulte também

Visão geral da classe