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 CComPtrBase para 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.
Valor retornado
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.
Valor retornado
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
.
Valor retornado
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();
Valor retornado
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.
Valor retornado
Retornará true se os objetos forem idênticos, caso contrário, retornará false.
CComPtrBase::operator !
O operador NOT.
bool operator!() const throw();
Valor retornado
Retornará true se o ponteiro CComHeapPtr
for igual a NULL, caso contrário, retornará false.
CComPtrBase::operator &
O operador address-of &
.
T** operator&() throw();
Valor retornado
Retorna o endereço do objeto apontado pelo objeto CComPtrBase
.
CComPtrBase::operator *
O operador pointer-to *
.
T& operator*() const throw();
Valor retornado
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.
Valor retornado
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();
Valor retornado
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.
Valor retornado
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.
Valor retornado
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 CComPtrBase
para o IUnknown
do objeto pai.
HRESULT SetSite(IUnknown* punkParent) throw();
Parâmetros
punkParent
Um ponteiro para a interface IUnknown
do pai.
Valor retornado
Retorna S_OK
se houver êxito ou um erro HRESULT
se houver falha.
Comentários
Esse método chama AtlSetChildSite
.