Partilhar via


aggregatable

Indica que a classe dá suporte à agregação.

Sintaxe

[ aggregatable(value) ]

Parâmetros

value
(Opcional) Um parâmetro para indicar quando o objeto COM pode ser agregado:

  • never O objeto COM não pode ser agregado.

  • allowed O objeto COM pode ser criado diretamente ou pode ser agregado. Esse é o padrão.

  • always O objeto COM não pode ser criado diretamente e só pode ser agregado. Ao chamar CoCreateInstance para esse objeto, você deve especificar a interface IUnknown do objeto de agregação (o controle IUnknown).

Comentários

O atributo C++ aggregatable tem a mesma funcionalidade que o atributo MIDL aggregatable. Isso significa que o compilador passará o atributo aggregatable para o arquivo .idl gerado.

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. Além do comportamento descrito anteriormente, o atributo também adiciona uma das seguintes macros à classe de destino:

Valor do parâmetro Macro inserida
Never DECLARE_NOT_AGGREGATABLE
Allowed DECLARE_POLY_AGGREGATABLE
Always DECLARE_ONLY_AGGREGATABLE

Exemplo

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

Requisitos

Contexto do atributo Valor
Aplicável ao class, struct
Repetível Não
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 IDL
Atributos de classe
Atributos Typedef, Enum, Union e Struct
Agregação