aggregates
オブジェクトの CLSID で指定されたオブジェクトを集約することを示します。
[ aggregates(
clsid,
variable_name
) ]
パラメーター
clsid
aggregatable オブジェクトの CLSID を指定します。variable_name
挿入変数の名前。この変数は集約されるオブジェクトの IUnknown が含まれています。
解説
オブジェクトに適用すると 集約 C++ 属性は集約されるオブジェクトの外側のラッパーを実装します。clsid で指定されます)。
この属性は コクラスProgIDまたは vi_progid の属性 (そのうちの 1 つを意味する属性を適用することを同じ要素に必要です。の一つの属性が使用されそのほかの 2 つが自動的に適用されます。たとえばProgID が適用されている場合vi_progid と コクラス も適用されます。
ATL プロジェクト
この属性はATL を使用してプロジェクト内で使用する場合は属性の動作が変わります。最初に次のエントリはターゲット オブジェクトの COM マップに追加されます :
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(_m_spAttrXXX, clsid)
第 2 に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;
};
必要条件
属性コンテキスト
対象 |
クラス struct |
複数回の適用 |
○ |
必要な属性 |
次の一つ以上 : コクラス ProgIDまたは vi_progid。 |
無効な属性 |
なし |
属性コンテキストの詳細については、「属性コンテキスト」を参照してください。
参照
関連項目
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND