Compartilhar via


agregações

Indica que o objeto agrega o objeto especificado pelo CLSID.

Sintaxe

[ aggregates(clsid, variable_name) ]

Parâmetros

clsid
Especifica o CLSID do objeto agregável.

variable_name
O nome da variável a ser inserida. Essa variável contém o IUnknown do objeto que está sendo agregado.

Comentários

Quando aplicado a um objeto, o atributo aggregates C++ implementa um wrapper externo para o objeto que está sendo agregado (especificado por clsid).

Esse atributo requer que o atributo coclass, progid ou vi_progid (ou outro atributo que implique um desses) também seja aplicado ao mesmo elemento. Se qualquer atributo único for usado, os outros dois serão aplicados automaticamente. Por exemplo, se progid for aplicado, vi_progid e coclass também serão aplicados.

Projetos ATL

Se esse atributo for usado em um projeto que usa ATL, o comportamento do atributo será alterado. Primeiro, a seguinte entrada é adicionada ao mapa COM do objeto de destino:

COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(_m_spAttrXXX, clsid)

Em segundo lugar, a macro DECLARE_GET_CONTROLLING_UNKNOWN também é adicionada.

Exemplo

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

Requisitos

Contexto do atributo Valor
Aplicável ao class, struct
Repetível Sim
Atributos obrigatórios Um ou mais dos seguintes: coclass, progid ou vi_progid.
Atributos inválidos Nenhum

Para obter mais informações sobre os contextos de atributo, confira Contextos de atributo.

Confira também

Atributos de COM
Atributos de classe
Atributos Typedef, Enum, Union e Struct
Agregação
Aggregatable
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND