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