Classe CComPtrBase

Essa classe fornece uma base para classes de ponteiro inteligente 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 ponteiro inteligente.

Membros

Construtores públicos

Nome Descrição
CComPtrBase::~CComPtrBase O destruidor.

Métodos públicos

Nome Descrição
CComPtrBase::Advise Chame esse método para criar uma conexão entre o ponto de conexão de CComPtrBase e o coletor de um cliente.
CComPtrBase::Attach Chame esse método para assumir a propriedade de um ponteiro existente.
CComPtrBase::CoCreateInstance Chame esse método para criar um objeto da classe associada a uma ID de classe ou ID de programa especificada.
CComPtrBase::CopyTo Chame esse método para copiar o ponteiro CComPtrBase para outra variável de ponteiro.
CComPtrBase::Detach Chame esse método para liberar a propriedade de um ponteiro.
CComPtrBase::IsEqualObject Chame esse método para verificar se o IUnknown especificado aponta para o mesmo objeto associado ao objeto CComPtrBase.
CComPtrBase::QueryInterface Chame esse método para retornar um ponteiro para uma interface especificada.
CComPtrBase::Release Chame esse método para liberar a interface.
CComPtrBase::SetSite Chame esse método para definir o site do objeto CComPtrBasepara o IUnknown do objeto pai.

Operadores públicos

Nome Descrição
CComPtrBase::operator T* O operador de conversão.
CComPtrBase::operator ! O operador NOT.
CComPtrBase::operator & O operador address-of &.
CComPtrBase::operator * O operador pointer-to *.
CComPtrBase::operator < O operador less-than.
CComPtrBase::operator == O operador de igualdade.
CComPtrBase::operator -> O operador ponteiros para membro.

Membros de dados públicos

Nome Descrição
CComPtrBase::p A variável de membro de dados de ponteiro.

Comentários

Essa classe fornece a base para outros ponteiros inteligentes que usam rotinas de gerenciamento de memória COM, como CComQIPtr e CComPtr. As classes derivadas adicionam os seus próprios construtores e operadores, mas contam com os métodos fornecidos por CComPtrBase.

Requisitos

Cabeçalho: atlcomcli.h

CComPtrBase::Advise

Chame esse método para criar uma conexão entre o ponto de conexão de CComPtrBase e o coletor de um cliente.

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

Parâmetros

pUnk
Um ponteiro para IUnknown do cliente.

iid
O GUID do ponto de conexão. Normalmente, esse GUID é igual à interface de saída gerenciada pelo ponto de conexão.

pdw
Um ponteiro para o cookie que identifica exclusivamente a conexão.

Retornar valor

Retorna S_OK se houver êxito ou um erro HRESULT se houver falha.

Comentários

Para obter mais informações, consulte AtlAdvise.

CComPtrBase::Attach

Chame esse método para assumir a propriedade de um ponteiro existente.

void Attach(T* p2) throw();

Parâmetros

p2
O objeto CComPtrBase assumirá a propriedade desse ponteiro.

Comentários

Attach chama CComPtrBase::Release na variável de membro CComPtrBase::p existente e atribui p2 a CComPtrBase::p. Quando um objeto CComPtrBase assumir a propriedade de um ponteiro, ele chamará automaticamente Release no ponteiro, que excluirá o ponteiro e os dados alocados se a contagem de referência no objeto for 0.

CComPtrBase::~CComPtrBase

O destruidor.

~CComPtrBase() throw();

Comentários

Libera a interface apontada por CComPtrBase.

CComPtrBase::CoCreateInstance

Chame esse método para criar um objeto da classe associada a uma ID de classe ou ID de programa especificada.

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
Ponteiro para um ProgID, utilizado para recuperar o CLSID.

pUnkOuter
Se for NULL, indica que o objeto não está sendo criado como parte de uma agregação. Se for não NULL, é um ponteiro para a interface IUnknown do objeto agregado (o IUnknown de controle).

dwClsContext
Contexto em que o código que gerencia o objeto recém-criado executará.

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

Retornar valor

Retornará S_OK se for bem-sucedido ou REGDB_E_CLASSNOTREG, CLASS_E_NOAGGREGATION, CO_E_CLASSSTRING ou E_NOINTERFACE em caso de falha. Consulte CoCreateClassInstance e CLSIDFromProgID para obter uma descrição desses erros.

Comentários

Se o primeiro formulário do método for chamado, CLSIDFromProgID será usado para recuperar o CLSID. Ambos os formulários chamam CoCreateClassInstance.

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

CComPtrBase::CopyTo

Chame esse método para copiar o ponteiro CComPtrBase para outra variável de ponteiro.

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

Parâmetros

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

Retornar valor

Retornará S_OK se for bem-sucedido, E_POINTER em caso de falha.

Comentários

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

Um erro HRESULT será retornado 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 esse método para liberar a propriedade de um ponteiro.

T* Detach() throw();

Retornar valor

Retorna uma cópia do ponteiro.

Comentários

Libera a propriedade de um ponteiro, define a variável de membro de dado CComPtrBase::p e retorna uma cópia do ponteiro.

CComPtrBase::IsEqualObject

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

bool IsEqualObject(IUnknown* pOther) throw();

Parâmetros

pOther
O IUnknown * a ser comparado.

Retornar valor

Retornará true se os objetos forem idênticos, caso contrário, retornará false.

CComPtrBase::operator !

O operador NOT.

bool operator!() const throw();

Retornar valor

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

CComPtrBase::operator &

O operador address-of &.

T** operator&() throw();

Retornar valor

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

CComPtrBase::operator *

O operador pointer-to *.

T& operator*() const throw();

Retornar valor

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

Se builds de depuração, 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 ponteiro para um objeto.

Retornar valor

Retornará true se CComPtrBase e pT apontarem para o mesmo objeto, caso contrário, retornará false.

CComPtrBase::operator ->

O operador ponteiro para membro.

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

Retornar valor

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

Comentários

Use esse operador para chamar um método em uma classe apontada pelo objeto CComPtrBase. Em builds de depuração, ocorrerá uma falha de asserção se o membro de dados CComPtrBase apontar para NULL.

CComPtrBase::operator <

O operador less-than.

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

Parâmetros

pT
Um ponteiro para um objeto.

Retornar valor

Retornará true se o ponteiro gerenciado pelo objeto atual for menor que o ponteiro com o qual está sendo comparado.

CComPtrBase::operator T*

O operador de conversão.

operator T*() const throw();

Comentários

Retorna um ponteiro para o tipo de dados de objeto definido no modelo de classe.

CComPtrBase::p

A variável de membro de dados de ponteiro.

T* p;

Comentários

Essa variável de membro contém as informações do ponteiro.

CComPtrBase::QueryInterface

Chame esse método para retornar um ponteiro para 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.

Retornar valor

Retornará S_OK se for bem-sucedido ou E_NOINTERFACE em caso de falha.

Comentários

Esse 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

Chame esse método para liberar a interface.

void Release() throw();

Comentários

A interface é liberada e CComPtrBase::p é definido como NULL.

CComPtrBase::SetSite

Chame esse método para definir o site do objeto CComPtrBasepara o IUnknown do objeto pai.

HRESULT SetSite(IUnknown* punkParent) throw();

Parâmetros

punkParent
Um ponteiro para a interface IUnknown do pai.

Retornar valor

Retorna S_OK se houver êxito ou um erro HRESULT se houver falha.

Comentários

Esse método chama AtlSetChildSite.

Confira também

Visão geral de classe