Freigeben über


aggregatable

Gibt an, dass die Klasse Aggregation unterstützt.

Syntax

[ aggregatable(value) ]

Parameter

value
(Optional) Ein Parameter, der angibt, wann das COM-Objekt aggregiert werden kann:

  • never Das COM-Objekt kann nicht aggregiert werden.

  • allowed Das COM-Objekt kann direkt erstellt oder aggregiert werden. Dies ist die Standardeinstellung.

  • always Das COM-Objekt kann nicht direkt erstellt werden und kann nur aggregiert werden. Wenn Sie dieses Objekt aufrufen CoCreateInstance , müssen Sie die Schnittstelle des IUnknown aggregierenden Objekts (das Steuern IUnknown) angeben.

Hinweise

Das aggregatierbare C++-Attribut verfügt über die gleiche Funktionalität wie das aggregatierbare MIDL-Attribut. Dies bedeutet, dass der Compiler das aggregatierbare Attribut an die generierte IDL-Datei übergibt.

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. Zusätzlich zum zuvor beschriebenen Verhalten fügt das Attribut der Zielklasse auch eines der folgenden Makros hinzu:

Parameterwert Eingefügtes Makro
Never DECLARE_NOT_AGGREGATABLE
Allowed DECLARE_POLY_AGGREGATABLE
Always DECLARE_ONLY_AGGREGATABLE

Beispiel

// cpp_attr_ref_aggregatable.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"

[module(name="MyModule")];

[ coclass, aggregatable(allowed),
  uuid("1a8369cc-1c91-42c4-befa-5a5d8c9d2529")]
class CMyClass {};

Anforderungen

Attributkontext Wert
Gilt für class, struct
Wiederholbar Nein
Erforderliche Attribute Eine oder mehrere der folgenden: coclass, , progidoder vi_progid.
Ungültige Attribute None

Weitere Informationen zu den Attributkontexten finden Sie unter Attributkontexte.

Siehe auch

IDL-Attribute
Klassenattribute
typedef-, enum-, union- und struct-Attribute
Aggregation