aggregates (聚合体)

指示对象聚合由 CLSID 指定的对象。

语法

[ aggregates(clsid, variable_name) ]

参数

clsid
指定可聚合对象的 CLSID。

variable_name
要插入的变量的名称。 此变量包含所聚合对象的 IUnknown

备注

应用于对象时, aggregates C++ 属性会为所聚合的对象(由 clsid指定)实现外部包装器。

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

ATL 项目

如果在使用 ATL 的项目中使用此属性,该属性的行为将会更改。 首先,将以下条目添加到目标对象的 COM 映射:

COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(_m_spAttrXXX, clsid)

其次,还会添加 DECLARE_GET_CONTROLLING_UNKNOWN 宏。

示例

// cpp_attr_ref_aggregates.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"

// requires 'aggregatable.dll'
// see aggregatable attribute to create 'aggregatable.dll'
class DECLSPEC_UUID("1a8369cc-1c91-42c4-befa-5a5d8c9d2529") CMyClass;

[module (name="MYObject")];
[object, uuid("ab006d85-e754-47c5-9ef4-2744ff32a20c")]
__interface IObject
{
};

[ coclass, aggregates(__uuidof(CMyClass)),
  uuid("91cb2c06-8931-432a-baac-206e55c4edfb")]
struct CObject : IObject
{
   int i;
};

要求

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

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

另请参阅

COM 特性
类特性
Typedef、Enum、Union 和 Struct 特性
聚合
aggregatable
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND