Freigeben über


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