aggregates
Wskazuje, że obiekt agreguje obiekt określony przez CLSID.
Składnia
[ aggregates(clsid, variable_name) ]
Parametry
clsid
Określa CLSID obiektu aggregatable.
variable_name
Nazwa zmiennej, która ma zostać wstawiona. Ta zmienna zawiera IUnknown
zagregowany obiekt.
Uwagi
Po zastosowaniu do obiektu atrybut agreguje C++ implementuje zewnętrzną otokę dla obiektu agregowanego (określonego przez clsid
).
Ten atrybut wymaga również zastosowania coclass, progid lub vi_progid atrybutu (lub innego atrybutu, który implikuje jeden z tych) również do tego samego elementu. Jeśli jest używany jakikolwiek pojedynczy atrybut, pozostałe dwa są stosowane automatycznie. Na przykład, jeśli progid
jest stosowany, vi_progid
i coclass
są również stosowane.
Projekty ATL
Jeśli ten atrybut jest używany w projekcie korzystającym z atl, zachowanie atrybutu ulega zmianie. Najpierw do mapy COM obiektu docelowego zostanie dodany następujący wpis:
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(_m_spAttrXXX, clsid)
Po drugie, dodano również makro DECLARE_GET_CONTROLLING_UNKNOWN .
Przykład
// 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;
};
Wymagania
Kontekst atrybutu | Wartość |
---|---|
Dotyczy | class , struct |
Powtarzalne | Tak |
Wymagane atrybuty | Co najmniej jeden z następujących elementów: coclass , progid lub vi_progid . |
Nieprawidłowe atrybuty | Brak |
Aby uzyskać więcej informacji na temat kontekstów atrybutów, zobacz Konteksty atrybutów.
Zobacz też
Atrybuty COM
Atrybuty klasy
Atrybuty Typedef, Enum, Union oraz Struct
Agregacja
Aggregatable
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND