agrégats

Indique que l’objet agrège l’objet spécifié par le CLSID.

Syntaxe

[ aggregates(clsid, variable_name) ]

Paramètres

clsid
Spécifie le CLSID de l’objet qui peut être agrégé.

variable_name
Nom de la variable à insérer. Cette variable contient l’objet IUnknown agrégé.

Notes

Quand il est appliqué à un objet, l’attribut C++ aggregates implémente un wrapper externe pour l’objet en cours d’agrégation (spécifié par clsid).

Cet attribut exige que l’attribut coclass, progidou vi_progid (ou un autre attribut qui implique l’un de ceux-ci) soit également appliqué au même élément. Si un attribut unique est utilisé, les deux autres sont appliqués automatiquement. Par exemple, si progid elle est appliquée et coclass vi_progid appliquée également.

Projets ATL

Si vous utilisez cet attribut dans un projet qui utilise ATL, le comportement de l’attribut change. Tout d’abord, l’entrée suivante est ajoutée au mappage COM de l’objet cible :

COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(_m_spAttrXXX, clsid)

Ensuite, la macro DECLARE_GET_CONTROLLING_UNKNOWN est également ajoutée.

Exemple

// 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;
};

Spécifications

Contexte d’attribut Valeur
S’applique à class, struct
Renouvelable Oui
Attributs requis Un ou plusieurs des éléments suivants : coclass, progidou vi_progid.
Attributs non valides Aucune

Pour plus d'informations sur les contextes d'attribut, consultez Contextes d'attribut.

Voir aussi

Attributs COM
Attributs de classe
Attributs Typedef, Enum, Union et Struct
Agrégation
Aggregatable
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND