CAdapt Class

此模板用于包装一些类,这些类将 address-of 运算符重新定义为返回对象地址之外的内容。

template < 
   class T 
> 
class CAdapt

参数

  • T
    已适配的类型。

成员

公共构造函数

名称

说明

CAdapt::CAdapt

构造函数。

公共运算符

名称

说明

CAdapt::operator const T&

返回对 m_T 的 const 引用。

CAdapt::operator T&

返回对 m_T 的引用。

CAdapt::operator <

将已适配类型的对象与 m_T 作比较。

CAdapt::operator =

将已适配类型的对象分配给 m_T

CAdapt::operator ==

将已适配类型的对象与 m_T 作比较。

公共数据成员

名称

说明

CAdapt::m_T

正在适配的数据。

备注

CAdapt 是用于包装类(将 address-of 运算符 (operator &) 重新定义为返回对象地址以外的内容)的简单模板。 这样的类的示例包括 ATL 的 CComBSTRCComPtrCComQIPtr 类,以及编译器 COM 支持类 _com_ptr_t。 这些类都将 address-of 运算符重新定义为返回类的数据成员(对于 CComBSTRBSTR;对于其他类是接口指针)之一的地址。

CAdapt 的主要作用是隐藏由类 T 定义的 address-of 运算符,但仍保留已适配的类的特征。 通过包含 T 类型的公共成员 m_T,以及定义转换运算符、比较运算符和复制构造函数来允许将 CAdapt 的专用化当做 T 类型的对象处理,CAdapt 实现了这个作用。

适配器类 CAdapt 很有用,因为某些容器样式类期望能够使用 address-of 运算符获取其包含的对象的地址。 重新定义 address-of 运算符可能使此要求无法得到满足,而且通常会导致编译错误并阻止将非适配类型用于期望它“正常工作”的类。 CAdapt 围绕这些问题提供了一种方法。

通常,当你要将 CComBSTRCComPtrCComQIPtr_com_ptr_t 对象存储在容器样式类中时,你将使用 CAdapt。 在大多数情况下,若要支持 C++ 标准,这对于 C++11 标准库容器必需的,但 C++11 标准库容器会自动处理已重载 operator&() 的类型。 标准库通过在内部使用 std::addressof() 获取对象的真实地址来达到这一目的。

要求

**标头:**atlcomcli.h

请参见

其他资源

ATL Class Overview