CAdapt クラス
このテンプレートは、オブジェクトのアドレス以外の値を返すために、アドレス演算子を再定義するクラスをラップするときに使用されます。
template <
class T
>
class CAdapt
パラメーター
- T
適合された型。
メンバー
パブリック コンストラクター
名前 |
説明 |
---|---|
コンストラクターです。 |
パブリック演算子
名前 |
説明 |
---|---|
m_T への const 参照を返します。 |
|
m_T への参照を返します。 |
|
適合された型のオブジェクトを m_T と比較します。 |
|
適合された型のオブジェクトを m_T に割り当てます。 |
|
適合された型のオブジェクトを m_T と比較します。 |
パブリック データ メンバー
名前 |
説明 |
---|---|
適合しているデータ。 |
解説
CAdapt は、オブジェクトのアドレス以外の値を返すために、アドレス演算子 (operator &) を再定義するクラスをラップするときに使用される簡単なテンプレートです。 このようなクラスの例としては、ATL の CComBSTR、CComPtr、および CComQIPtr クラス、そしてコンパイラ COM サポート クラスである _com_ptr_t が含まれます。 これらのクラスはすべて、いずれかのデータ メンバーのアドレスを返すために address-of 演算子を再定義します (CComBSTR の場合には BSTR、他のクラスの場合にはインターフェイス ポインター)。
CAdapt の主な役割は、クラス T によって定義された address-of 演算子を隠しながら、適合されたクラスの特性を保持することです。 CAdapt はこの役割を果たしており、型 T のパブリック メンバー m_T を保持し、変換演算子、比較演算子、およびコピー コンストラクターを定義することにより、まるで型 T のオブジェクトであるかのように CAdapt を特殊化できます。
アダプター クラス CAdapt は、いくつかの container-style クラスで、含まれるオブジェクトのアドレスを address-of 演算子を使用して取得できることが想定されているために、役立ちます。 address-of 演算子の再定義によって、この要件に混乱が生じ、通常はコンパイル エラーが発生し、"単に動作" することが想定されているクラスで、適合されていない型の使用が妨げられることがあります。 CAdapt では、こうした問題を回避するための手段が提供されています。
通常 container-style クラスでは、CComBSTR、CComPtr、CComQIPtr、または _com_ptr_t オブジェクトを保存する場合に CAdapt を使用します。 これは、C++11 Standard のサポート前には C++ Standard Library コンテナーで最も一般的に必要とされていましたが、C++11 Standard Library コンテナーは operator&() をオーバーロードした型と共に自動的に動作します。 Standard Library では、オブジェクトの真のアドレスを取得するために内部で std::addressof() を使用することによりこれを実現しています。
必要条件
ヘッダー: atlcomcli.h