Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Указывает, что класс поддерживает агрегирование.
Синтаксис
[ aggregatable(value) ]
Параметры
значение
(Необязательно) Параметр, указывающий, когда объект COM можно агрегировать:
neverОбъект COM не может быть агрегирован.allowedОбъект COM можно создать напрямую или его можно агрегировать. Это значение по умолчанию.alwaysОбъект COM не может быть создан напрямую и может быть агрегирован только. При вызовеCoCreateInstanceэтого объекта необходимо указать интерфейс агрегатного объектаIUnknown(контролируемыйIUnknown).
Замечания
Агрегируемый атрибут C++ имеет те же функции, что и агрегируемый атрибут MIDL. Это означает, что компилятор передает агрегируемый атрибут в созданный IDL-файл.
Этот атрибут требует, чтобы атрибут coclass, progidили vi_progid (или другой атрибут, который подразумевает один из них) также применялся к этому элементу. Если используется любой отдельный атрибут, два других применяются автоматически. Например, если progid применяется, vi_progid а coclass также применяется.
Проекты ATL
Если этот атрибут используется в проекте, где применяется ATL, поведение атрибута изменяется. Помимо описанного ранее поведения атрибут также добавляет один из следующих макросов в целевой класс:
| Значение параметра | Вставленный макрос |
|---|---|
Never |
DECLARE_NOT_AGGREGATABLE |
Allowed |
DECLARE_POLY_AGGREGATABLE |
Always |
DECLARE_ONLY_AGGREGATABLE |
Пример
// 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 {};
Требования
| Контекст атрибута | Значение |
|---|---|
| Относится к | class, struct |
| Повторяемый | No |
| Обязательные атрибуты | Одно или несколько из следующих элементов: coclass, progidили vi_progid. |
| Недопустимые атрибуты | нет |
Дополнительные сведения о контекстах атрибутов см. в разделе Контексты атрибутов.
См. также
Атрибуты IDL
Атрибуты классов
Атрибуты Typedef, Enum, Union и Struct
Агрегат