CComPtrBase クラス

このクラスは、COM ベースのメモリ ルーチンを使用するスマート ポインター クラスの基礎となります。

構文

template <class T>
class CComPtrBase

パラメーター

T
スマート ポインターによって参照されるオブジェクトの種類。

メンバー

パブリック コンストラクター

名前 説明
CComPtrBase::~CComPtrBase デストラクター。

パブリック メソッド

名前 説明
CComPtrBase::Advise CComPtrBase の接続ポイントとクライアントのシンクの間の接続を作成するには、このメソッドを呼び出します。
CComPtrBase::Attach 既存のポインターの所有権を取得するには、このメソッドを呼び出します。
CComPtrBase::CoCreateInstance 指定したクラス ID またはプログラム ID に関連付けられているクラスのオブジェクトを作成するには、このメソッドを呼び出します。
CComPtrBase::CopyTo CComPtrBase ポインターを別のポインター変数にコピーするには、このメソッドを呼び出します。
CComPtrBase::Detach ポインターの所有権を解放するには、このメソッドを呼び出します。
CComPtrBase::IsEqualObject 指定した IUnknownCComPtrBase オブジェクトに関連付けられているのと同じオブジェクトをポイントしているかどうかを確認するには、このメソッドを呼び出します。
CComPtrBase::QueryInterface 指定したインターフェイスへのポインターを返す場合は、このメソッドを呼び出します。
CComPtrBase::Release インターフェイスを解放するには、このメソッドを呼び出します。
CComPtrBase::SetSite CComPtrBase オブジェクトのサイトを親オブジェクトの IUnknown に設定するには、このメソッドを呼び出します。

パブリック演算子

名前 説明
CComPtrBase::operator T* キャスト演算子。
CComPtrBase::operator ! NOT 演算子。
CComPtrBase::operator & アドレス取得 & 演算子。
CComPtrBase::operator * ポインター * 演算子。
CComPtrBase::operator < 小なり演算子。
CComPtrBase::operator == 等値演算子。
CComPtrBase::operator -> メンバー演算子へのポインター。

パブリック データ メンバー

名前 説明
CComPtrBase::p ポインター データ メンバー変数。

解説

このクラスは、CComQIPtrCComPtr などの COM メモリ管理ルーチンを使用する他のスマート ポインターの基礎を提供します。 派生クラスは、独自のコンストラクターと演算子を追加しますが、CComPtrBase によって提供されるメソッドに依存します。

必要条件

ヘッダー: atlcomcli.h

CComPtrBase::Advise

CComPtrBase の接続ポイントとクライアントのシンクの間の接続を作成するには、このメソッドを呼び出します。

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

パラメーター

pUnk
クライアントの IUnknown へのポインター。

iid
接続ポイントの GUID。 通常、この GUID は接続ポイントによって管理される発信インターフェイスと同じです。

pdw
接続を一意に識別する Cookie へのポインター。

戻り値

成功した場合は S_OK を返し、失敗した場合はエラー HRESULT を返します。

解説

詳細については、AtlAdviseを参照してください。

CComPtrBase::Attach

既存のポインターの所有権を取得するには、このメソッドを呼び出します。

void Attach(T* p2) throw();

パラメーター

p2
CComPtrBase オブジェクトは、このポインターの所有権を取得します。

解説

Attach は、既存の CComPtrBase::p メンバー変数の CComPtrBase::Release を呼び出し、p2CComPtrBase::p に割り当てます。 CComPtrBase オブジェクトがポインターの所有権を取得すると、ポインターに対して Release が自動的に呼び出され、オブジェクトの参照カウントが 0 になった場合は、ポインターと割り当てられたデータが削除されます。

CComPtrBase::~CComPtrBase

デストラクター。

~CComPtrBase() throw();

解説

CComPtrBase がポイントするインターフェイスを解放します。

CComPtrBase::CoCreateInstance

指定したクラス ID またはプログラム ID に関連付けられているクラスのオブジェクトを作成するには、このメソッドを呼び出します。

HRESULT CoCreateInstance(
    LPCOLESTR szProgID,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

HRESULT CoCreateInstance(
    REFCLSID rclsid,
    LPUNKNOWN pUnkOuter = NULL,
    DWORD dwClsContext = CLSCTX_ALL) throw();

パラメーター

szProgID
CLSID の回復に使用される ProgID へのポインター。

pUnkOuter
NULL の場合、オブジェクトが集計の一部として作成されていないことを示します。 NULL 以外の場合、集約オブジェクトの IUnknown インターフェイス (制御する IUnknown) へのポインターです。

dwClsContext
新しく作成されたオブジェクトを管理するコードが実行されるコンテキスト。

rclsid
オブジェクトの作成に使用されるデータとコードに関連付けられた CLSID。

戻り値

成功した場合は S_OK を返し、失敗した場合は REGDB_E_CLASSNOTREGCLASS_E_NOAGGREGATIONCO_E_CLASSSTRING、または E_NOINTERFACE を返します。 これらのエラーの説明については、CoCreateClassInstance および CLSIDFromProgID を参照してください。

解説

メソッドの最初の形式が呼び出された場合、CLSID を復旧するために CLSIDFromProgID が使用されます。 どちらのフォームも CoCreateClassInstance を呼び出します。

デバッグ ビルドでは、CComPtrBase::p が NULL に等しくない場合、アサーション エラーが発生します。

CComPtrBase::CopyTo

CComPtrBase ポインターを別のポインター変数にコピーするには、このメソッドを呼び出します。

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

パラメーター

ppT
CComPtrBase ポインターを受け取る変数のアドレス。

戻り値

正常に終了した場合は、S_OK を返します。それ以外の場合は、E_POINTER を返します。

解説

CComPtrBase ポインターを ppT にコピーします。 CComPtrBase::p メンバー変数の参照カウントがインクリメントされます。

ppT が NULL に等しい場合は、エラー HRESULT が返されます。 デバッグ ビルドでは、ppT が NULL に等しい場合、アサーション エラーが発生します。

CComPtrBase::Detach

ポインターの所有権を解放するには、このメソッドを呼び出します。

T* Detach() throw();

戻り値

ポインターのコピーを返します。

解説

ポインターの所有権を解放し、CComPtrBase::p データ メンバー変数を NULL に設定し、ポインターのコピーが返されます。

CComPtrBase::IsEqualObject

指定した IUnknownCComPtrBase オブジェクトに関連付けられているのと同じオブジェクトをポイントしているかどうかを確認するには、このメソッドを呼び出します。

bool IsEqualObject(IUnknown* pOther) throw();

パラメーター

pOther
比較対象の IUnknown *

戻り値

オブジェクトが同一の場合は true、それ以外の場合は false を返します。

CComPtrBase::operator !

NOT 演算子。

bool operator!() const throw();

戻り値

CComHeapPtr ポインターが NULL と等しい場合は true を返します。それ以外の場合は false を返します。

CComPtrBase::operator &

アドレス取得 & 演算子。

T** operator&() throw();

戻り値

CComPtrBase オブジェクトがポイントするオブジェクトのアドレスを返します。

CComPtrBase::operator *

ポインター * 演算子。

T& operator*() const throw();

戻り値

CComPtrBase::p の値を返します。つまり、CComPtrBase オブジェクトによって参照されるオブジェクトへのポインターです。

デバッグ ビルドでは、CComPtrBase::p が NULL に等しくない場合、アサーション エラーが発生します。

CComPtrBase::operator ==

等値演算子。

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

パラメーター

pT
オブジェクトへのポインター。

戻り値

CComPtrBasepT が同じオブジェクトをポイントしている場合は true、それ以外の場合は false を返します。

CComPtrBase::operator ->

メンバー演算子へのポインター。

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

戻り値

データ メンバー変数 CComPtrBase::p の値を返します。

解説

この演算子を使用すると、CComPtrBase オブジェクトがポイントするクラスのメソッドを呼び出すことができます。 デバッグ ビルドでは、CComPtrBase データ メンバーが NULL を指す場合、アサーション エラーが発生します。

CComPtrBase::operator <

小なり演算子。

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

パラメーター

pT
オブジェクトへのポインター。

戻り値

現在のオブジェクトによって管理されているポインターが、比較対象のポインターより小さい場合に true を返します。

CComPtrBase::operator T*

キャスト演算子。

operator T*() const throw();

解説

クラス テンプレートで定義されているオブジェクト データ型にポインターが返されます。

CComPtrBase::p

ポインター データ メンバー変数。

T* p;

解説

このメンバー変数により、ポインター情報が保持されます。

CComPtrBase::QueryInterface

指定したインターフェイスへのポインターを返す場合は、このメソッドを呼び出します。

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

パラメーター

Q
インターフェイス ポインターが必要なオブジェクトの種類。

pp
要求されたインターフェイス ポインターを受け取る出力変数のアドレス。

戻り値

成功した場合は S_OK を返し、失敗した場合は E_NOINTERFACE を返します。

解説

このメソッドは IUnknown::QueryInterface を呼び出します。

デバッグ ビルドでは、pp が NULL に等しくない場合、アサーション エラーが発生します。

CComPtrBase::Release

インターフェイスを解放するには、このメソッドを呼び出します。

void Release() throw();

解説

インターフェイスが解放され、CComPtrBase::p が NULL に設定されます。

CComPtrBase::SetSite

CComPtrBase オブジェクトのサイトを親オブジェクトの IUnknown に設定するには、このメソッドを呼び出します。

HRESULT SetSite(IUnknown* punkParent) throw();

パラメーター

punkParent
親の IUnknown インターフェイスへのポインター。

戻り値

成功した場合は S_OK を返し、失敗した場合はエラー HRESULT を返します。

解説

このメソッドは AtlSetChildSite を呼び出します。

関連項目

クラスの概要