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 chamarCoCreateInstance
para esse objeto, você deve especificar a interfaceIUnknown
do objeto de agregação (o controleIUnknown
).
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