共用方式為


CComAggObject 類別

這個類別會實作 匯總物件的 IUnknown 介面。 根據定義,匯總的物件包含在外部物件內。 類別 CComAggObject 類似於 CComObject 類別,不同之處在於它會公開可直接存取外部用戶端的介面。

語法

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

參數

包含
您的類別衍生自 CComObjectRootCComObjectRootEx,以及您想要在 物件上支援的任何其他介面。

成員

公用建構函式

名稱 描述
CComAggObject::CComAggObject 建構函式。
CComAggObject::~CComAggObject 解構函式。

公用方法

名稱 描述
CComAggObject::AddRef 遞增匯總物件上的參考計數。
CComAggObject::CreateInstance 此靜態函式可讓您建立新的 CComAggObject contained<>物件,而不需要 CoCreateInstance 的額外負荷。
CComAggObject::FinalConstruct 執行的最終初始化 m_contained
CComAggObject::FinalRelease 執行的最終解構 m_contained
CComAggObject::QueryInterface 擷取所要求介面的指標。
CComAggObject::Release 遞減匯總物件上的參考計數。

公用資料成員

名稱 描述
CComAggObject::m_contained 委派 IUnknown 對外部未知的呼叫。

備註

CComAggObject實作匯總物件的 IUnknownCComAggObjectIUnknown有自己的介面,與外部物件的IUnknown介面分開,並維護自己的參考計數。

如需匯總的詳細資訊,請參閱 ATL COM 物件的基本概念一文

繼承階層架構

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

需求

標頭: atlcom.h

CComAggObject::AddRef

遞增匯總物件上的參考計數。

STDMETHOD_(ULONG, AddRef)();

傳回值

對於診斷或測試而言可能很有用的值。

CComAggObject::CComAggObject

建構函式。

CComAggObject(void* pv);

參數

光伏
[in]外部未知。

備註

CComContainedObject初始化成員、m_contained,並遞增模組鎖定計數。

解構函式會遞減模組鎖定計數。

CComAggObject::~CComAggObject

解構函式。

~CComAggObject();

備註

釋放所有已配置的資源、呼叫 FinalRelease,並遞減模組鎖定計數。

CComAggObject::CreateInstance

此靜態函式可讓您建立新的 CComAggObjectcontained<> 物件,而不需要 CoCreateInstance 的額外負荷。

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

參數

pp
[out]CComAggObject<包含>指標的指標。 如果 CreateInstance 失敗, pp 會設定為 NULL。

傳回值

標準 HRESULT 值。

備註

傳回的物件具有零的參考計數,因此立即呼叫 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;

參數

包含
[in]您的類別衍生自 CComObjectRootCComObjectRootEx,以及您想要在 物件上支援的任何其他介面。

備註

透過的所有 IUnknown 呼叫 m_contained 都會委派給外部未知的 。

CComAggObject::QueryInterface

擷取所要求介面的指標。

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

參數

iid
[in] 所要求介面的識別碼。

ppvObject
[out]由 iid 識別之介面指標的指標。 如果物件不支持這個介面, ppvObject 會設定為 NULL。

pp
[out]型別 Q所識別之介面指標的指標。 如果物件不支持這個介面, pp 會設定為 NULL。

傳回值

標準 HRESULT 值。

備註

如果要求的介面為 IUnknownQueryInterface 則會傳回匯總物件本身 IUnknown 的指標,並遞增參考計數。 否則,這個方法會透過 CComContainedObject 成員查詢 介面, m_contained

CComAggObject::Release

遞減匯總物件上的參考計數。

STDMETHOD_(ULONG, Release)();

傳回值

在偵錯組建中, Release 傳回可能對診斷或測試很有用的值。 在非偵錯組建中, Release 一律會傳回 0。

另請參閱

CComObject 類別
CComPolyObject 類別
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
類別概觀