次の方法で共有


aggregates

オブジェクトが CLSID で指定されたオブジェクトを集約することを示します。

構文

[ aggregates(clsid, variable_name) ]

パラメーター

clsid
集約可能オブジェクトの CLSID を指定します。

variable_name
挿入する変数の名前。 この変数には、集約対象オブジェクトの IUnknown を格納します。

解説

オブジェクトに適用すると、 aggregates C++ 属性は ( clsidによって指定された) 集約対象オブジェクトのアウター ラッパーを実装します。

この属性を使用するには、 coclassprogid、または vi_progid 属性 (または、これらのいずれかを意味する別の属性) も同じ要素に適用する必要があります。 いずれか 1 つの属性を使用すると、他の 2 つも自動的に適用されます。 たとえば、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;
};

必要条件

属性コンテキスト Value
適用対象 $
反復可能 はい
必要な属性 coclassprogidvi_progid のいずれか。
無効な属性 なし

属性コンテキストの詳細については、「 属性コンテキスト」を参照してください。

関連項目

COM 属性
クラス属性
Typedef、Enum、Union、および Struct 型の属性
集計
Aggregatable
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND