template< class T >
class CComPtr
Parameters
T A COM interface specifying the type of pointer to be stored.
ATL uses CComPtr and CComQIPtr to manage COM interface pointers. Both classes perform automatic reference counting through calls to AddRef and Release. Overloaded operators handle pointer operations. CComQIPtr additionally supports automatic querying of interfaces though QueryInterface.
The following code is from CFirePropNotifyEvent::FireOnRequestEdit:
static HRESULT FireOnRequestEdit(IUnknown* pUnk, DISPID dispID) { CComQIPtr<IConnectionPointContainer, &IID_IConnectionPointContainer> pCPC(pUnk); if (!pCPC) return S_OK;
CComPtr<IConnectionPoint> pCP; pCPC->FindConnectionPoint(IID_IPropertyNotifySink, &pCP); if (!pCP) return S_OK;
... };
This example illustrates the following:
#include <atlbase.h>
See Also CComPtr::CComPtr, CComQIPtr::CComQIPtr
Methods | |
CComPtr | Constructor. Initializes the member pointer. |
Release | Decrements the reference count on the object pointed to by the member pointer. |
Operators | |
operator T* | Converts a CComPtr object to a T*. |
operator * | Returns the dereferenced value of the member pointer. |
operator & | Returns the address of the member pointer. |
operator -> | Returns the member pointer. |
operator = | Assigns a pointer to the member pointer. |
operator ! | Returns TRUE or FALSE, depending on whether the member pointer is NULL. |
Data Members | |
p | The managed COM interface pointer of type T*. |
CComPtr( );
CComPtr( T* lp );
CComPtr ( const CComPtr< T >& lp );
Parameters
lp [in] Used to initialize the interface pointer, p.
Remarks
The default constructor sets p to NULL. The copy constructor sets p to the member pointer of lp and calls AddRef through p. If you pass a pointer type derived from T, the constructor sets p to the T* parameter and calls AddRef.
The destructor calls Release through p.
CComPtr Overview | Class Members
void Release( );
Remarks
Calls IUnknown::Release through p and sets p to NULL.
CComPtr Overview | Class Members
operator T*( );
Remarks
Converts a CComPtr object to a T*.
CComPtr Overview | Class Members
T& operator *( );
Remarks
Returns the dereferenced value of the interface pointer, p.
Note The operation will assert if p is NULL.
CComPtr Overview | Class Members
T** operator &( );
Remarks
Returns the address of the interface pointer, p.
Note The operation will assert if p is non-NULL.
CComPtr Overview | Class Members
T* operator ->( );
Remarks
Returns the interface pointer, p.
Note The operation will assert if p is NULL.
CComPtr Overview | Class Members
T* operator =( T* lp );
T* operator =( const CComPtr< T >& lp );
Remarks
When assigning a pointer type derived from T, the operator sets p to the given T*. When assigning a CComPtr, the operator sets p to the member pointer of lp.
CComPtr Overview | Class Members
BOOL operator !( );
Remarks
Returns TRUE if p is NULL; otherwise, FALSE.
CComPtr Overview | Class Members
T* p;
Remarks
Points to the specified COM interface.