Share via


aggregatable

指示类支持聚合。

语法

[ aggregatable(value) ]

参数

value
(可选)一个参数,用于指示何时可以聚合 COM 对象:

  • never COM 对象不可聚合。

  • allowed 可以直接创建 COM 对象,也可以聚合该对象。 这是默认值。

  • always 不可直接创建 COM 对象,仅可聚合该对象。 为此对象调用 CoCreateInstance 时,必须指定聚合对象的 IUnknown 接口(控制 IUnknown)。

备注

aggregatable C++ 特性具有与 aggregatable MIDL 特性相同的功能。 这意味着编译器会将 aggregatable 特性传递给生成的 .idl 文件。

此属性要求 coclassprogidvi_progid 属性(或隐含这些属性之一的其他属性)也应用于同一个元素。 如果使用任何单个属性,则会自动应用另外两个属性。 例如,如果应用 progid,则也会应用 vi_progidcoclass

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

要求

特性上下文
适用于 classstruct
可重复
必需的特性 下面的一项或多项:coclassprogidvi_progid
无效的特性

有关特性上下文的详细信息,请参见 特性上下文

另请参阅

IDL 特性
类特性
Typedef、Enum、Union 和 Struct 特性
聚合