agregasi
Menunjukkan bahwa objek mengagregasi objek yang ditentukan oleh CLSID.
Sintaks
[ aggregates(clsid, variable_name) ]
Parameter
clsid
Menentukan CLSID dari objek yang dapat diagregasi.
variable_name
Nama variabel yang akan disisipkan. Variabel ini berisi IUnknown
objek yang diagregasi.
Keterangan
Saat diterapkan ke objek, atribut C++ agregat mengimplementasikan pembungkus luar untuk objek yang dikumpulkan (ditentukan oleh clsid
).
Atribut ini mengharuskan atribut coclass, progid, atau vi_progid (atau atribut lain yang menyiratkan salah satu dari atribut ini) juga diterapkan ke elemen yang sama. Jika ada atribut tunggal yang digunakan, dua atribut lainnya akan diterapkan secara otomatis. Misalnya, jika progid
diterapkan, vi_progid
dan coclass
juga diterapkan.
Proyek ATL
Jika atribut ini digunakan dalam proyek yang menggunakan ATL, perilaku atribut berubah. Pertama, entri berikut ditambahkan ke peta COM objek target:
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(_m_spAttrXXX, clsid)
Kedua, makro DECLARE_GET_CONTROLLING_UNKNOWN juga ditambahkan.
Contoh
// cpp_attr_ref_aggregates.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"
// requires 'aggregatable.dll'
// see aggregatable attribute to create 'aggregatable.dll'
class DECLSPEC_UUID("1a8369cc-1c91-42c4-befa-5a5d8c9d2529") CMyClass;
[module (name="MYObject")];
[object, uuid("ab006d85-e754-47c5-9ef4-2744ff32a20c")]
__interface IObject
{
};
[ coclass, aggregates(__uuidof(CMyClass)),
uuid("91cb2c06-8931-432a-baac-206e55c4edfb")]
struct CObject : IObject
{
int i;
};
Persyaratan
Konteks atribut | Nilai |
---|---|
Berlaku untuk | class , struct |
Berulang | Ya |
Atribut yang diperlukan | Satu atau beberapa hal berikut ini: coclass , , progid atau vi_progid . |
Atribut tidak valid | Tidak |
Untuk informasi selengkapnya tentang konteks atribut, lihat Konteks Atribut.
Lihat juga
Atribut COM
Atribut Kelas
Atribut Typedef, Enum, Union, dan Struct
Agregasi
Dapat diagregasi
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND