このクラスは、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 |
指定した IUnknown が CComPtrBase オブジェクトに関連付けられているのと同じオブジェクトをポイントしているかどうかを確認するには、このメソッドを呼び出します。 |
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 |
ポインター データ メンバー変数。 |
解説
このクラスは、CComQIPtr や CComPtr などの 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 を呼び出し、p2 を CComPtrBase::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_CLASSNOTREG、CLASS_E_NOAGGREGATION、CO_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
指定した IUnknown が CComPtrBase オブジェクトに関連付けられているのと同じオブジェクトをポイントしているかどうかを確認するには、このメソッドを呼び出します。
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
オブジェクトへのポインター。
戻り値
CComPtrBase と pT が同じオブジェクトをポイントしている場合は 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 を呼び出します。