aggregates (聚合体)
指示对象聚合由 CLSID 指定的对象。
语法
[ aggregates(clsid, variable_name) ]
参数
clsid
指定可聚合对象的 CLSID。
variable_name
要插入的变量的名称。 此变量包含所聚合对象的 IUnknown
。
备注
应用于对象时, aggregates C++ 属性会为所聚合的对象(由 clsid
指定)实现外部包装器。
此属性要求 coclass、 progid或 vi_progid 属性(或隐含这些属性之一的其他属性)也应用于同一个元素。 如果使用任何单个属性,则会自动应用另外两个属性。 例如,如果应用 progid
,则也会应用 vi_progid
和 coclass
。
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;
};
要求
特性上下文 | 值 |
---|---|
适用于 | %> |
可重复 | 是 |
必需的特性 | 下面的一项或多项:coclass 、progid 或 vi_progid 。 |
无效的特性 | 无 |
有关特性上下文的详细信息,请参见 特性上下文。
另请参阅
COM 特性
类特性
Typedef、Enum、Union 和 Struct 特性
聚合
aggregatable
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND