aggregati
Indica che l'oggetto aggrega l'oggetto specificato dal CLSID.
Sintassi
[ aggregates(clsid, variable_name) ]
Parametri
clsid
Specifica il CLSID dell'oggetto aggregabile.
variable_name
Nome della variabile da inserire. Questa variabile contiene l'oggetto IUnknown
dell'oggetto da aggregare.
Osservazioni:
Quando è applicato a un oggetto, l'attributo aggregates di C++ implementa un wrapper esterno per l'oggetto da aggregare (specificato da clsid
).
Questo attributo richiede che anche l'attributo coclass, progido vi_progid (o un altro attributo che implica uno di questi) sia applicato allo stesso elemento. Se viene usato un qualsiasi attributo, anche gli altri due vengono applicati automaticamente. Ad esempio, se progid
viene applicato vi_progid
e coclass
vengono applicati anche.
Progetti ATL
Se questo attributo viene usato in un progetto che usa ATL, il comportamento dell'attributo cambia. In primo luogo, alla mappa COM dell'oggetto di destinazione viene aggiunta la voce seguente:
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(_m_spAttrXXX, clsid)
In secondo luogo, viene aggiunta anche la macro DECLARE_GET_CONTROLLING_UNKNOWN .
Esempio
// 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;
};
Requisiti
Contesto attributo | Valore |
---|---|
Si applica a | class , struct |
Ripetibile | Sì |
Attributi obbligatori | Uno o più degli elementi seguenti: coclass , progid o vi_progid . |
Attributi non validi | None |
Per altre informazioni sui contesti di attributi, vedere Contesti di attributi.
Vedi anche
Attributi COM
Attributi di classe
Attributi Typedef, Enum, Union e Struct
Aggregazione
Aggregabile
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND