Bagikan melalui


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, , progidatau 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