aggregatable
指示类支持聚合。
语法
[ aggregatable(value) ]
参数
value
(可选)一个参数,用于指示何时可以聚合 COM 对象:
never
COM 对象不可聚合。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 。 |
无效的特性 | 无 |
有关特性上下文的详细信息,请参见 特性上下文。