次の方法で共有


aggregatable

クラスが集計をサポートしていることを示します。

構文

[ aggregatable(value) ]

パラメーター

value
(省略可能) COM オブジェクトを集計できるかどうかを示すパラメーター。

  • never COM オブジェクトを集計できません。

  • allowed COM オブジェクトは、直接作成することも、集計することもできます。 これが既定です。

  • always COM オブジェクトを直接作成することはできず、集計することはできません。 このオブジェクトに対して CoCreateInstance を呼び出す場合は、集約オブジェクトの IUnknown インターフェイス (制御 IUnknown) を指定する必要があります。

解説

aggregatable C++ 属性には、aggregatable MIDL 属性と同じ機能があります。 これは、コンパイラが aggregatable 属性を生成された .idl ファイルに渡すことを意味します。

この属性を使用するには、 coclassprogid、または vi_progid 属性 (または、これらのいずれかを意味する別の属性) も同じ要素に適用する必要があります。 いずれか 1 つの属性を使用すると、他の 2 つも自動的に適用されます。 たとえば、progid が適用されている場合、vi_progidcoclass も適用されます。

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 {};

要件

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

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

関連項目

IDL 属性
クラス属性
Typedef、Enum、Union、および Struct 型の属性
集約