aggregates
オブジェクトが CLSID で指定されたオブジェクトを集約することを示します。
構文
[ aggregates(clsid, variable_name) ]
パラメーター
clsid
集約可能オブジェクトの CLSID を指定します。
variable_name
挿入する変数の名前。 この変数には、集約対象オブジェクトの IUnknown
を格納します。
解説
オブジェクトに適用すると、 aggregates C++ 属性は ( clsid
によって指定された) 集約対象オブジェクトのアウター ラッパーを実装します。
この属性を使用するには、 coclass、 progid、または vi_progid 属性 (または、これらのいずれかを意味する別の属性) も同じ要素に適用する必要があります。 いずれか 1 つの属性を使用すると、他の 2 つも自動的に適用されます。 たとえば、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;
};
要件
属性コンテキスト | Value |
---|---|
適用対象 | $ |
反復可能 | はい |
必要な属性 | coclass 、progid 、vi_progid のいずれか。 |
無効な属性 | なし |
属性コンテキストの詳細については、「 属性コンテキスト」を参照してください。
関連項目
COM 属性
クラス属性
Typedef、Enum、Union、および Struct 型の属性
集約
Aggregatable
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND