次の方法で共有


CComAggObject クラス

このクラスでは、集計オブジェクトに対して IUnknown インターフェイスを実装します。 定義上、集計オブジェクトは外側のオブジェクト内に格納されます。 CComAggObject クラスは CComObject Class に似ていますが、外部クライアントから直接アクセスできるインターフェイスを公開する点が異なります。

構文

template<class contained>
class CComAggObject : public IUnknown,
   public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>

パラメーター

contained
CComObjectRoot または CComObjectRootEx から、およびオブジェクトでサポートするその他のインターフェイスから派生するクラス。

メンバー

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

名前 説明
CComAggObject::CComAggObject コンストラクター。
CComAggObject::~CComAggObject デストラクター。

パブリック メソッド

名前 説明
CComAggObject::AddRef 集計オブジェクトの参照カウントをインクリメントします。
CComAggObject::CreateInstance この静的関数を使用すると、CoCreateInstance のオーバーヘッドなしで新しい CComAggObject< contained > オブジェクトを作成できます。
CComAggObject::FinalConstruct m_contained の最終的な初期化を実行します。
CComAggObject::FinalRelease m_contained の最終的な破棄を実行します。
CComAggObject::QueryInterface 要求されたインターフェイスへのポインターを取得します。
CComAggObject::Release 集計オブジェクトの参照カウントをデクリメントします。

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

名前 説明
CComAggObject::m_contained 外部不明への IUnknown 呼び出しを委任します。

解説

CComAggObject では、集計オブジェクトに対して IUnknown を実装します。 CComAggObject では、外部オブジェクトの IUnknown インターフェイスとは別の独自の IUnknown インターフェイスを備えており、独自の参照カウントを保持します。

集計の詳細については、記事「ATL COM オブジェクトの基礎」を参照してください。

継承階層

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

要件

ヘッダー: atlcom.h

CComAggObject::AddRef

集計オブジェクトの参照カウントをインクリメントします。

STDMETHOD_(ULONG, AddRef)();

戻り値

診断またはテストに役立つ可能性がある値。

CComAggObject::CComAggObject

コンストラクター。

CComAggObject(void* pv);

パラメーター

pv
[in] 外部の不明。

解説

CComContainedObject メンバー (m_contained) を初期化し、モジュールのロック数をインクリメントします。

モジュールのロック数のデクリメントはデストラクターによって行われます。

CComAggObject::~CComAggObject

デストラクター。

~CComAggObject();

解説

割り当てられているすべてのリソースを解放し、FinalRelease を呼び出して、モジュールのロック数をデクリメントします。

CComAggObject::CreateInstance

この静的関数を使用すると、CoCreateInstance のオーバーヘッドを発生させることなく、新しい CComAggObject<contained > オブジェクトを作成できます。

static HRESULT WINAPI CreateInstance(
    LPUNKNOWN pUnkOuter,
    CComAggObject<contained>** pp);

パラメーター

pp
[out] CComAggObject<contained> ポインターを指すポインター。 CreateInstance が正常に終了しない場合、pp は NULL に設定されます。

戻り値

標準の HRESULT 値。

解説

返されるオブジェクトの参照カウントは 0 なので、すぐに AddRef を呼び出して、完了したら、Release を使用してオブジェクト ポインターに対する参照を解放します。

オブジェクトに直接アクセスする必要はないが、CoCreateInstance のオーバーヘッドなしで新しいオブジェクトを作成したい場合は、代わりに CComCoClass::CreateInstance を使用します。

CComAggObject::FinalConstruct

このメソッドは、オブジェクトの構築の最後の段階で呼び出され、m_contained メンバーに対して最終的な初期化を実行します。

HRESULT FinalConstruct();

戻り値

標準の HRESULT 値。

CComAggObject::FinalRelease

このメソッドは、オブジェクトの破棄中に呼び出され、m_contained メンバーを解放します。

void FinalRelease();

CComAggObject::m_contained

クラスから派生した CComContainedObject オブジェクト。

CComContainedObject<contained> m_contained;

パラメーター

contained
[in] CComObjectRoot または CComObjectRootEx から、およびオブジェクトでサポートするその他のインターフェイスから派生するクラス。

解説

m_contained を介した IUnknown 呼び出しはすべて、外部の不明に委任されます。

CComAggObject::QueryInterface

要求されたインターフェイスへのポインターを取得します。

STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);

パラメーター

iid
[入力] 要求されるインターフェイスの識別子。

ppvObject
[出力] iid によって識別されるインターフェイス ポインターへのポインター。 オブジェクトでこのインターフェイスがサポートされていない場合、ppvObject は NULL に設定されます。

pp
[出力] Q 型で識別されるインターフェイス ポインターへのポインター。 オブジェクトでこのインターフェイスがサポートされていない場合、pp は NULL に設定されます。

戻り値

標準の HRESULT 値。

解説

要求されたインターフェイスが IUnknown である場合、QueryInterface によって、集計オブジェクトの独自の IUnknown を指すポインターが返され、参照カウントがインクリメントされます。 それ以外の場合、このメソッドでは、CComContainedObject メンバー (m_contained) を介してインターフェイスを照会します。

CComAggObject::Release

集計オブジェクトの参照カウントをデクリメントします。

STDMETHOD_(ULONG, Release)();

戻り値

デバッグ ビルドでは、診断またはテストに役立つ可能性のある値が、Release から返されます。 デバッグ以外のビルドでは、Release から常に 0 が返されます。

関連項目

CComObject クラス
CComPolyObject クラス
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
クラスの概要