aggregates
Indicates that the object aggregates the object specified by the CLSID.
[ aggregates(
clsid,
variable_name
) ]
Parameters
clsid
Specifies the CLSID of the aggregatable object.variable_name
The name of the variable that is to be inserted. This variable contains the IUnknown of the object being aggregated.
Remarks
When applied to an object, the aggregates C++ attribute implements an outer wrapper for the object being aggregated (specified by clsid).
This attribute requires that the coclass, progid, or vi_progid attribute (or another attribute that implies one of these) also be applied to the same element. If any single attribute is used, the other two are automatically applied. For example, if progid is applied, vi_progid and coclass are also applied.
ATL Projects
If this attribute is used within a project that uses ATL, the behavior of the attribute changes. First, the following entry is added to the COM map of the target object:
COM_INTERFACE_ENTRY_AUTOAGGREGATE_BLIND(_m_spAttrXXX, clsid)
Second, the DECLARE_GET_CONTROLLING_UNKNOWN macro is also added.
Example
// 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;
};
Requirements
Attribute Context
Applies to |
class, struct |
Repeatable |
Yes |
Required attributes |
One or more of the following: coclass, progid, or vi_progid. |
Invalid attributes |
None |
For more information about the attribute contexts, see Attribute Contexts.
See Also
Concepts
Typedef, Enum, Union, and Struct Attributes