CComPtr

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


CComPtr Class Members

Methods
CComPtrConstructor. Initializes the member pointer.
ReleaseDecrements 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
pThe managed COM interface pointer of type T*.

CComPtr Overview


Methods


CComPtr::CComPtr

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


CComPtr::Release

void Release( );

Remarks

Calls IUnknown::Release through p and sets p to NULL.

CComPtr Overview | Class Members


Operators


CComPtr::operator T*

operator T*( );

Remarks

Converts a CComPtr object to a T*.

CComPtr Overview | Class Members


CComPtr::operator *

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


CComPtr::operator &

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


CComPtr::operator ->

T* operator ->( );

Remarks

Returns the interface pointer, p.

Note The operation will assert if p is NULL.

CComPtr Overview | Class Members


CComPtr::operator =

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


CComPtr::operator !

BOOL operator !( );

Remarks

Returns TRUE if p is NULL; otherwise, FALSE.

CComPtr Overview | Class Members


Data Members


CComPtr::p

T* p;

Remarks

Points to the specified COM interface.

CComPtr Overview | Class Members