Bagikan melalui


Kelas CComAggObject

Kelas ini mengimplementasikan antarmuka IUnknown untuk objek agregat. Menurut definisi, objek agregat terkandung dalam objek luar. Kelas CComAggObject ini mirip dengan Kelas CComObject, kecuali bahwa kelas tersebut mengekspos antarmuka yang dapat diakses langsung oleh klien eksternal.

Sintaks

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

Parameter

Terkandung
Kelas Anda, berasal dari CComObjectRoot atau CComObjectRootEx, serta dari antarmuka lain yang ingin Anda dukung pada objek.

Anggota

Konstruktor Publik

Nama Deskripsi
CComAggObject::CComAggObject Konstruktor.
CComAggObject::~CComAggObject Destruktor.

Metode Publik

Nama Deskripsi
CComAggObject::AddRef Menaikkan jumlah referensi pada objek agregat.
CComAggObject::CreateInstance Fungsi statis ini memungkinkan Anda membuat objek CComAggObject ><contained baru tanpa overhead CoCreateInstance.
CComAggObject::FinalConstruct Melakukan inisialisasi akhir .m_contained
CComAggObject::FinalRelease Melakukan penghancuran m_containedakhir .
CComAggObject::QueryInterface Mengambil penunjuk ke antarmuka yang diminta.
CComAggObject::Release Mengurangi jumlah referensi pada objek agregat.

Anggota Data Publik

Nama Deskripsi
CComAggObject::m_contained Mendelegasikan IUnknown panggilan ke luar tidak diketahui.

Keterangan

CComAggObjectmengimplementasikan IUnknown untuk objek agregat. CComAggObject memiliki antarmukanya sendiri IUnknown , terpisah dari antarmuka objek IUnknown luar, dan mempertahankan jumlah referensinya sendiri.

Untuk informasi selengkapnya tentang agregasi, lihat artikel Dasar-Dasar Objek COM ATL.

Hierarki Warisan

CComObjectRootBase

CComObjectRootEx

IUnknown

CComAggObject

Persyaratan

Header: atlcom.h

CComAggObject::AddRef

Menaikkan jumlah referensi pada objek agregat.

STDMETHOD_(ULONG, AddRef)();

Tampilkan Nilai

Nilai yang mungkin berguna untuk diagnostik atau pengujian.

CComAggObject::CComAggObject

Konstruktor.

CComAggObject(void* pv);

Parameter

Pv
[di] Bagian luar tidak diketahui.

Keterangan

Menginisialisasi CComContainedObject anggota, m_contained, dan menaikkan jumlah kunci modul.

Destruktor mengurangi jumlah kunci modul.

CComAggObject::~CComAggObject

Destruktor.

~CComAggObject();

Keterangan

Membebaskan semua sumber daya yang dialokasikan, memanggil FinalRelease, dan mengurangi jumlah kunci modul.

CComAggObject::CreateInstance

Fungsi statis ini memungkinkan Anda membuat objek CComAggObject ><containedbaru tanpa overhead CoCreateInstance.

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

Parameter

Pp
[out] Penunjuk ke pointer berisi> CComAggObject<. Jika CreateInstance tidak berhasil, pp diatur ke NULL.

Tampilkan Nilai

Nilai HRESULT standar.

Keterangan

Objek yang dikembalikan memiliki jumlah referensi nol, jadi segera panggil AddRef , lalu gunakan Release untuk membebaskan referensi pada penunjuk objek setelah Anda selesai.

Jika Anda tidak memerlukan akses langsung ke objek, tetapi masih ingin membuat objek baru tanpa overhead CoCreateInstance, gunakan CComCoClass::CreateInstance sebagai gantinya.

CComAggObject::FinalConstruct

Dipanggil selama tahap akhir konstruksi objek, metode ini melakukan inisialisasi akhir pada anggota m_contained .

HRESULT FinalConstruct();

Tampilkan Nilai

Nilai HRESULT standar.

CComAggObject::FinalRelease

Dipanggil selama penghancuran objek, metode ini membebaskan anggota m_contained .

void FinalRelease();

CComAggObject::m_contained

Objek CComContainedObject berasal dari kelas Anda.

CComContainedObject<contained> m_contained;

Parameter

Terkandung
[di] Kelas Anda, berasal dari CComObjectRoot atau CComObjectRootEx, serta dari antarmuka lain yang ingin Anda dukung pada objek.

Keterangan

Semua IUnknown panggilan melalui m_contained didelegasikan ke luar yang tidak diketahui.

CComAggObject::QueryInterface

Mengambil penunjuk ke antarmuka yang diminta.

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

Parameter

iid
[di] Pengidentifikasi antarmuka yang diminta.

ppvObject
[out] Penunjuk ke penunjuk antarmuka yang diidentifikasi oleh iid. Jika objek tidak mendukung antarmuka ini, ppvObject diatur ke NULL.

Pp
[out] Penunjuk ke penunjuk antarmuka yang diidentifikasi berdasarkan jenis Q. Jika objek tidak mendukung antarmuka ini, pp diatur ke NULL.

Tampilkan Nilai

Nilai HRESULT standar.

Keterangan

Jika antarmuka yang diminta adalah IUnknown, QueryInterface mengembalikan penunjuk ke objek agregat sendiri IUnknown dan menaikkan jumlah referensi. Jika tidak, metode ini meminta antarmuka melalui CComContainedObject anggota, m_contained.

CComAggObject::Release

Mengurangi jumlah referensi pada objek agregat.

STDMETHOD_(ULONG, Release)();

Tampilkan Nilai

Dalam build debug, Release mengembalikan nilai yang mungkin berguna untuk diagnostik atau pengujian. Dalam build non-debug, Release selalu mengembalikan 0.

Lihat juga

Kelas CComObject
Kelas CComPolyObject
DECLARE_AGGREGATABLE
DECLARE_ONLY_AGGREGATABLE
DECLARE_NOT_AGGREGATABLE
Gambaran Umum Kelas