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
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
クラスの概要