Compartir a través de


Clase CComPtrBase

Esta clase proporciona una base para las clases de punteros inteligentes mediante rutinas de memoria basadas en COM.

Sintaxis

template <class T>
class CComPtrBase

Parámetros

T
El tipo de objeto al que hace referencia el puntero inteligente.

Miembros

Constructores públicos

Nombre Descripción
CComPtrBase::~CComPtrBase El destructor .

Métodos públicos

Nombre Descripción
CComPtrBase::Advise Llame a este método para crear una conexión entre el punto de conexión de CComPtrBase y el receptor de un cliente.
CComPtrBase::Attach Llame a este método para asumir la propiedad de un puntero existente.
CComPtrBase::CoCreateInstance Llame a este método para crear un objeto de la clase asociada a un Id. especificado de clase o de programa.
CComPtrBase::CopyTo Llame a este método para copiar el puntero CComPtrBase en otra variable de puntero.
CComPtrBase::Detach Llame a este método para liberar la propiedad de un puntero.
CComPtrBase::IsEqualObject Llame a este método para comprobar si el IUnknown especificado apunta al mismo objeto asociado al objeto CComPtrBase.
CComPtrBase::QueryInterface Llame a este método para devolver un puntero a una interfaz especificada.
CComPtrBase::Release Llame a este método para liberar la interfaz.
CComPtrBase::SetSite Llame a este método para establecer el sitio del objeto CComPtrBase en el IUnknown del objeto primario.

Operadores públicos

Nombre Descripción
CComPtrBase::operator T* El operador de conversión.
CComPtrBase::operator ! El operador NOT.
CComPtrBase::operator & El operador de dirección de &.
CComPtrBase::operator * El operador de puntero a *.
CComPtrBase::operator < El operador Menor que.
CComPtrBase::operator == El operador de igualdad.
CComPtrBase::operator -> El operador de puntero a miembros.

Miembros de datos públicos

Nombre Descripción
CComPtrBase::p Variable de miembro de datos del puntero.

Comentarios

Esta clase proporciona la base para otros punteros inteligentes que usan rutinas de administración de memoria COM, como CComQIPtr y CComPtr. Las clases derivadas agregan sus propios constructores y operadores, pero se basan en los métodos proporcionados por CComPtrBase.

Requisitos

Encabezado: atlcomcli.h

CComPtrBase::Advise

Llame a este método para crear una conexión entre el punto de conexión de CComPtrBase y el receptor de un cliente.

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

Parámetros

pUnk
Un puntero al IUnknown del cliente.

iid
El GUID del punto de conexión. Normalmente, este GUID es el mismo que la interfaz saliente administrada por el punto de conexión.

pdw
Un puntero a la cookie que identifica de forma única la conexión.

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

Para obtener más información, vea AtlAdvise.

CComPtrBase::Attach

Llame a este método para asumir la propiedad de un puntero existente.

void Attach(T* p2) throw();

Parámetros

p2
El objeto CComPtrBase asumirá la propiedad de este puntero.

Comentarios

Attach llama a CComPtrBase::Release en la variable miembro CComPtrBase::p existente y, después, asigna p2 a CComPtrBase::p. Cuando un objeto CComPtrBase asume la propiedad de un puntero, llamará automáticamente a Release en el puntero, lo que elimina el puntero y los datos asignados si el recuento de referencias del objeto va a 0.

CComPtrBase::~CComPtrBase

El destructor .

~CComPtrBase() throw();

Comentarios

Libera la interfaz a la que apunta CComPtrBase.

CComPtrBase::CoCreateInstance

Llame a este método para crear un objeto de la clase asociada a un Id. especificado de clase o de programa.

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
Puntero a un ProgID, que se usa para recuperar el CLSID.

pUnkOuter
Si es NULL, indica que el objeto no se crea como parte de un agregado. Si no es NULL, este es un puntero a la interfaz IUnknown del objeto agregado (la IUnknown controladora).

dwClsContext
Contexto en el que se ejecutará el código que administra el objeto recién creado.

rclsid
CLSID asociado a los datos y al código que se usará para crear el objeto.

Valor devuelto

Devuelve S_OK si la operación se realiza correctamente; de lo contrario, devuelve REGDB_E_CLASSNOTREG, CLASS_E_NOAGGREGATION, CO_E_CLASSSTRING o E_NOINTERFACE. Consulte CoCreateClassInstance y CLSIDFromProgID para obtener una descripción de estos errores.

Comentarios

Si se llama al primer formulario del método, CLSIDFromProgID se usa para recuperar el CLSID. A continuación, ambos formularios llaman a CoCreateClassInstance.

En las compilaciones de depuración, se producirá un error de aserción si CComPtrBase::p no es igual a NULL.

CComPtrBase::CopyTo

Llame a este método para copiar el puntero CComPtrBase en otra variable de puntero.

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

Parámetros

ppT
Dirección de la variable que va a recibir el puntero CComPtrBase.

Valor devuelto

Devuelve S_OK si la operación se realiza correctamente; de lo contrario, devuelve E_POINTER.

Comentarios

Copia el puntero CComPtrBase a ppT. El recuento de referencias de la variable miembro CComPtrBase::p se incrementa.

Se devolverá un error HRESULT si ppT es igual a NULL. En las compilaciones de depuración, se producirá un error de aserción si ppT es igual a NULL.

CComPtrBase::Detach

Llame a este método para liberar la propiedad de un puntero.

T* Detach() throw();

Valor devuelto

Devuelve una copia del puntero.

Comentarios

Libera la propiedad de un puntero, establece la variable miembro de datos de CComPtrBase::p en NULL y devuelve una copia del puntero.

CComPtrBase::IsEqualObject

Llame a este método para comprobar si el IUnknown especificado apunta al mismo objeto asociado al objeto CComPtrBase.

bool IsEqualObject(IUnknown* pOther) throw();

Parámetros

pOther
IUnknown * que se va comparar.

Valor devuelto

Devuelve “true” si los objetos son idénticos; en caso contrario, devuelve “false”.

CComPtrBase::operator !

El operador NOT.

bool operator!() const throw();

Valor devuelto

Devuelve “true” si el puntero CComHeapPtr es igual a NULL; en caso contrario, devuelve “false”.

CComPtrBase::operator &

El operador de dirección de &.

T** operator&() throw();

Valor devuelto

Devuelve la dirección del objeto al que apunta el objeto CComPtrBase.

CComPtrBase::operator *

El operador de puntero a *.

T& operator*() const throw();

Valor devuelto

Devuelve el valor de CComPtrBase::p; es decir, un puntero al objeto al que hace referencia el objeto CComPtrBase.

En las compilaciones de depuración, se producirá un error de aserción si CComPtrBase::p no es igual a NULL.

CComPtrBase::operator ==

El operador de igualdad.

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

Parámetros

pT
Un puntero a un objeto.

Valor devuelto

Devuelve “true” si CComPtrBase y pT apuntan al mismo objeto; en caso contrario, devuelve “false”.

CComPtrBase::operator ->

Operador de puntero a miembro.

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

Valor devuelto

Devuelve el valor de la variable miembro de datos de CComPtrBase::p.

Comentarios

Use este operador para llamar a un método de una clase a la que apunta el objeto CComPtrBase. En las compilaciones de depuración, se producirá un error de aserción si el miembro de datos de CComPtrBase apunta a NULL.

CComPtrBase::operator <

El operador Menor que.

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

Parámetros

pT
Un puntero a un objeto.

Valor devuelto

Devuelve “true” si el puntero administrado por el objeto actual es menor que el puntero con el que se le compara.

CComPtrBase::operator T*

El operador de conversión.

operator T*() const throw();

Comentarios

Devuelve un puntero al tipo de datos de objeto definido en la plantilla de clase.

CComPtrBase::p

Variable de miembro de datos del puntero.

T* p;

Comentarios

Esta variable miembro contiene la información del puntero.

CComPtrBase::QueryInterface

Llame a este método para devolver un puntero a una interfaz especificada.

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

Parámetros

Q
El tipo de objeto cuyo puntero de interfaz es necesario.

pp
Dirección de la variable de salida que recibe el puntero de interfaz solicitado.

Valor devuelto

Devuelve S_OK si la operación se realiza correctamente; de lo contrario, devuelve E_NOINTERFACE.

Comentarios

Este método llama a IUnknown::QueryInterface.

En las compilaciones de depuración, se producirá un error de aserción si pp no es igual a NULL.

CComPtrBase::Release

Llame a este método para liberar la interfaz.

void Release() throw();

Comentarios

La interfaz se libera y CComPtrBase::p se establece en NULL.

CComPtrBase::SetSite

Llame a este método para establecer el sitio del objeto CComPtrBase en el IUnknown del objeto primario.

HRESULT SetSite(IUnknown* punkParent) throw();

Parámetros

punkParent
Un puntero a la interfaz IUnknown del elemento primario.

Valor devuelto

Devuelve S_OK si es correcto o un error HRESULT en caso de error.

Comentarios

Este método llama a AtlSetChildSite.

Consulte también

Información general de clases