aggregatable
クラスが集計をサポートしていることを示します。
構文
[ aggregatable(value) ]
パラメーター
value
(省略可能) COM オブジェクトを集計できるかどうかを示すパラメーター。
never
COM オブジェクトを集計できません。allowed
COM オブジェクトは、直接作成することも、集計することもできます。 これが既定です。always
COM オブジェクトを直接作成することはできず、集計することはできません。 このオブジェクトに対してCoCreateInstance
を呼び出す場合は、集約オブジェクトのIUnknown
インターフェイス (制御IUnknown
) を指定する必要があります。
解説
aggregatable C++ 属性には、aggregatable MIDL 属性と同じ機能があります。 これは、コンパイラが aggregatable 属性を生成された .idl ファイルに渡すことを意味します。
この属性を使用するには、 coclass、 progid、または vi_progid 属性 (または、これらのいずれかを意味する別の属性) も同じ要素に適用する必要があります。 いずれか 1 つの属性を使用すると、他の 2 つも自動的に適用されます。 たとえば、progid
が適用されている場合、vi_progid
と coclass
も適用されます。
ATL プロジェクト
この属性が ATL を使用するプロジェクト内で使用されている場合、属性の動作は変わります。 前に説明した動作に加えて、属性は次のマクロのいずれかをターゲット クラスにも追加します。
パラメーター値 | 挿入されたマクロ |
---|---|
Never |
DECLARE_NOT_AGGREGATABLE |
Allowed |
DECLARE_POLY_AGGREGATABLE |
Always |
DECLARE_ONLY_AGGREGATABLE |
例
// cpp_attr_ref_aggregatable.cpp
// compile with: /LD
#define _ATL_ATTRIBUTES
#include "atlbase.h"
#include "atlcom.h"
[module(name="MyModule")];
[ coclass, aggregatable(allowed),
uuid("1a8369cc-1c91-42c4-befa-5a5d8c9d2529")]
class CMyClass {};
要件
属性コンテキスト | 値 |
---|---|
適用対象 | $ |
反復可能 | いいえ |
必要な属性 | coclass 、progid 、vi_progid のいずれか。 |
無効な属性 | なし |
属性コンテキストの詳細については、「 属性コンテキスト」を参照してください。