Classe CComAggObject
Questa classe implementa l'interfaccia IUnknown per un oggetto aggregato. Per definizione, un oggetto aggregato è contenuto all'interno di un oggetto esterno. La CComAggObject
classe è simile alla classe CComObject, ad eccezione del fatto che espone un'interfaccia direttamente accessibile ai client esterni.
Sintassi
template<class contained>
class CComAggObject : public IUnknown,
public CComObjectRootEx<contained::_ThreadModel::ThreadModelNoCS>
Parametri
contenuto
La classe, derivata da CComObjectRoot o CComObjectRootEx, nonché da qualsiasi altra interfaccia che si vuole supportare sull'oggetto.
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CComAggObject::CComAggObject | Costruttore. |
CComAggObject::~CComAggObject | Distruttore. |
Metodi pubblici
Nome | Descrizione |
---|---|
CComAggObject::AddRef | Incrementa il conteggio dei riferimenti sull'oggetto aggregato. |
CComAggObject::CreateInstance | Questa funzione statica consente di creare un nuovo oggetto CComAggObject contained ><senza l'overhead di CoCreateInstance. |
CComAggObject::FinalConstruct | Esegue l'inizializzazione finale di m_contained . |
CComAggObject::FinalRelease | Esegue la distruzione finale di m_contained . |
CComAggObject::QueryInterface | Recupera un puntatore all'interfaccia richiesta. |
CComAggObject::Release | Decrementa il conteggio dei riferimenti sull'oggetto aggregato. |
Membri dati pubblici
Nome | Descrizione |
---|---|
CComAggObject::m_contained | IUnknown Delegati chiamano all'oggetto sconosciuto esterno. |
Osservazioni:
CComAggObject
implementa IUnknown per un oggetto aggregato. CComAggObject
ha una propria IUnknown
interfaccia, separata dall'interfaccia dell'oggetto IUnknown
esterno e mantiene il proprio conteggio dei riferimenti.
Per altre informazioni sull'aggregazione, vedere l'articolo Nozioni fondamentali sugli oggetti COM ATL.
Gerarchia di ereditarietà
CComObjectRootBase
IUnknown
CComAggObject
Requisiti
Intestazione: atlcom.h
CComAggObject::AddRef
Incrementa il conteggio dei riferimenti sull'oggetto aggregato.
STDMETHOD_(ULONG, AddRef)();
Valore restituito
Valore che può essere utile per la diagnostica o il test.
CComAggObject::CComAggObject
Costruttore.
CComAggObject(void* pv);
Parametri
Pv
[in] Sconosciuto esterno.
Osservazioni:
Inizializza il CComContainedObject
membro, m_contained e incrementa il conteggio dei blocchi del modulo.
Il distruttore decrementa il conteggio dei blocchi del modulo.
CComAggObject::~CComAggObject
Distruttore.
~CComAggObject();
Osservazioni:
Libera tutte le risorse allocate, chiama FinalRelease e decrementa il conteggio dei blocchi del modulo.
CComAggObject::CreateInstance
Questa funzione statica consente di creare un nuovo oggetto CComAggObjectcontained
>< senza l'overhead di CoCreateInstance.
static HRESULT WINAPI CreateInstance(
LPUNKNOWN pUnkOuter,
CComAggObject<contained>** pp);
Parametri
Pp
[out] Puntatore a un puntatore contenuto> CComAggObject<. Se CreateInstance
ha esito negativo, pp è impostato su NULL.
Valore restituito
Valore HRESULT standard.
Osservazioni:
L'oggetto restituito ha un conteggio dei riferimenti pari a zero, quindi chiamare AddRef
immediatamente, quindi usare Release
per liberare il riferimento sul puntatore all'oggetto al termine.
Se non è necessario l'accesso diretto all'oggetto, ma si vuole comunque creare un nuovo oggetto senza sovraccarico di CoCreateInstance
, usare invece CComCoClass::CreateInstance .
CComAggObject::FinalConstruct
Chiamato durante le fasi finali della costruzione di oggetti, questo metodo esegue qualsiasi inizializzazione finale sul membro m_contained .
HRESULT FinalConstruct();
Valore restituito
Valore HRESULT standard.
CComAggObject::FinalRelease
Chiamato durante la distruzione dell'oggetto, questo metodo libera il membro m_contained .
void FinalRelease();
CComAggObject::m_contained
Oggetto CComContainedObject derivato dalla classe.
CComContainedObject<contained> m_contained;
Parametri
contenuto
[in] La classe, derivata da CComObjectRoot o CComObjectRootEx, nonché da qualsiasi altra interfaccia che si vuole supportare sull'oggetto.
Osservazioni:
Tutte le IUnknown
chiamate tramite m_contained
vengono delegate all'elemento sconosciuto esterno.
CComAggObject::QueryInterface
Recupera un puntatore all'interfaccia richiesta.
STDMETHOD(QueryInterface)(REFIID iid, void** ppvObject);
template <class Q>
HRESULT STDMETHODCALLTYPE QueryInterface(Q** pp);
Parametri
iid
[in] Identificatore dell'interfaccia richiesta.
ppvObject
[out] Puntatore al puntatore dell'interfaccia identificato da iid. Se l'oggetto non supporta questa interfaccia, ppvObject è impostato su NULL.
Pp
[out] Puntatore al puntatore dell'interfaccia identificato dal tipo Q
. Se l'oggetto non supporta questa interfaccia, pp è impostato su NULL.
Valore restituito
Valore HRESULT standard.
Osservazioni:
Se l'interfaccia richiesta è IUnknown
, QueryInterface
restituisce un puntatore al proprio IUnknown
oggetto aggregato e incrementa il conteggio dei riferimenti. In caso contrario, questo metodo esegue una query per l'interfaccia tramite il CComContainedObject
membro m_contained.
CComAggObject::Release
Decrementa il conteggio dei riferimenti sull'oggetto aggregato.
STDMETHOD_(ULONG, Release)();
Valore restituito
Nelle compilazioni di debug restituisce Release
un valore che può essere utile per la diagnostica o il test. Nelle compilazioni non di debug restituisce Release
sempre 0.
Vedi anche
Classe CComObject
Classe CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Cenni preliminari sulla classe