指示类支持聚合。
语法
[ aggregatable(value) ]
参数
value
(可选)一个参数,用于指示何时可以聚合 COM 对象:
neverCOM 对象不可聚合。allowed可以直接创建 COM 对象,也可以聚合该对象。 这是默认值。always不可直接创建 COM 对象,仅可聚合该对象。 为此对象调用CoCreateInstance时,必须指定聚合对象的IUnknown接口(控制IUnknown)。
备注
aggregatable C++ 特性具有与 aggregatable MIDL 特性相同的功能。 这意味着编译器会将 aggregatable 特性传递给生成的 .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 {};
要求
| 特性上下文 | 值 |
|---|---|
| 适用于 | %> |
| 可重复 | 否 |
| 必需的特性 | 下面的一项或多项:coclass、progid 或 vi_progid。 |
| 无效的特性 | 无 |
有关特性上下文的详细信息,请参见 特性上下文。