Aggregate
Gibt an, dass das Objekt das von der CLSID angegebene Objekt aggregiert.
Syntax
[ aggregates(clsid, variable_name) ]
Parameter
clsid
Gibt die CLSID des aggregierbaren Objekts an.
variable_name
Der Name der Variable, die eingefügt werden soll. Diese Variable enthält das IUnknown
Objekt, das aggregiert wird.
Hinweise
Das C++-Attribut aggregates implementiert einen äußeren Wrapper für die Objekte, die aggregiert werden (angegeben von clsid
), wenn es auf ein Objekt angewendet wird.
Dieses Attribut erfordert, dass die Attribute coclass, progid, oder vi_progid (oder ein anderes Attribut, das eines der genannten impliziert) auch auf demselben Element angewendet werden. Wenn ein einzelnes Attribut verwendet wird, werden die anderen beiden automatisch angewendet. Wenn sie beispielsweise progid
angewendet vi_progid
wird und coclass
auch angewendet werden.
ATL-Projekte
Wenn dieses Attribut in einem Projekt verwendet wird, das ATL verwendet, ändert sich das Verhalten des Attributs. Erstens wird der folgende Eintrag der COM-Zuordnung des Zielobjekts hinzugefügt:
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(_m_spAttrXXX, clsid)
Zweitens wird das Makro DECLARE_GET_CONTROLLING_UNKNOWN ebenfalls hinzugefügt.
Beispiel
// 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;
};
Anforderungen
Attributkontext | Wert |
---|---|
Gilt für | class , struct |
Wiederholbar | Ja |
Erforderliche Attribute | Eine oder mehrere der folgenden: coclass , , progid oder vi_progid . |
Ungültige Attribute | Keine |
Weitere Informationen zu den Attributkontexten finden Sie unter Attributkontexte.
Siehe auch
COM-Attribute
Klassenattribute
typedef-, enum-, union- und struct-Attribute
Aggregation
Aggregierbar
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND