CAdapt 類別
此範本用來包裝重新定義傳址 (address-of) 運算子的類別,以傳回物件位址以外的內容。
語法
template <class T>
class CAdapt
參數
T
配接的類型。
成員
公用建構函式
名稱 | 描述 |
---|---|
CAdapt::CAdapt | 建構函式。 |
公用運算子
名稱 | 描述 |
---|---|
CAdapt::operator const T& | 傳 const 回的 m_T 參考。 |
CAdapt::operator T& | 傳回 m_T 的參考。 |
CAdapt::operator < | 將所配接類型的物件與 m_T 相比較。 |
CAdapt::operator = | 將所配接類型的物件指派給 m_T 。 |
CAdapt::operator == | 將所配接類型的物件與 m_T 相比較。 |
公用資料成員
名稱 | 描述 |
---|---|
CAdapt::m_T | 要配接的資料。 |
備註
CAdapt
是一個簡單的範本,用來包裝重新定義傳址運算子 (operator &
) 的類別,以傳回物件位址以外的內容。 這些類別的範例包括 ATL 的 CComBSTR
、CComPtr
和 CComQIPtr
類別,以及編譯器 COM 支援類別 _com_ptr_t
。 這些類別都會重新定義運算符位址,以傳回其中一個數據成員的位址(在 案例 CComBSTR
中為 BSTR,以及其他類別的介面指標)。
CAdapt
的主要角色是隱藏類別 T 所定義的位址運算元,但仍保留調整類別的特性。 CAdapt
藉由保存類型 T 的公用成員m_T,以及定義轉換運算符、比較運算符和複製建構函式,以允許將的特製化CAdapt
視為 T 型別的物件,以達到此角色。
配接器類別 CAdapt
非常實用,因為某些容器樣式類別預期能夠使用傳址運算子取得其內含物件的位址。 因此,重新定義傳址運算子可能會混淆此需求,而這通常會造成編譯錯誤,並且無法使用非配接的類型搭配只要該類型「可運作」的類別。 CAdapt
提供了解決這些問題的方式。
通常,當您要將 CAdapt
、CComBSTR
、CComPtr
或 CComQIPtr
儲存在容器樣式類別中時,會使用 _com_ptr_t
。 在支援 C++11 標準之前,這對於 C++ 標準程式庫容器而言是最常要執行的工作,不過,C++11 標準程式庫容器會自動搭配具有多載 operator&()
的類型運作。 標準連結庫會在內部使用 std::addressof 取得對象的真實位址來達成此目的。
需求
標頭: atlcomcli.h
CAdapt::CAdapt
建構函式允許預設建構配接器物件、從調整型別的物件複製,或從另一個配接器物件複製。
CAdapt();
CAdapt(const T& rSrc);
CAdapt(const CAdapt& rSrCA);
CAdapt(T&& rSrCA); // (Visual Studio 2017)
CAdapt(CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
參數
rSrc
要複製到新建構之配接器物件的型別變數。
rSrCA
配接器物件,其自主數據應該複製到新建構的配接器物件中(或已移動)。
CAdapt::m_T
保存要調整的數據。
T m_T;
備註
此public
數據成員可以直接或間接存取運算符 const T& 和 operator T&。
CAdapt::operator const T&
傳const
回m_T成員的參考,允許將配接器對象視為 T 類型的物件。
operator const T&() const;
傳回值
const
的m_T
參考。
CAdapt::operator T&
傳回m_T成員的參考,讓配接器對象被視為 T 類型的物件。
operator T&();
傳回值
的 m_T
參考。
CAdapt::operator <
比較已調整型別的物件與 m_T。
bool operator<(const T& rSrc) const;
參數
rSrc
要比較之對象的參考。
傳回值
與 rSrc 之間的m_T
比較結果。
CAdapt::operator =
指派運算符會將自變數 rSrc 指派給數據成員 m_T ,並傳回目前的配接器物件。
CAdapt& operator= (const T& rSrc);
CAdapt& operator= (T&& rSrCA); // (Visual Studio 2017)
CAdapt& operator= (CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
參數
rSrc
要複製之調整型別對象的參考。
rSrCA
要移動之對象的參考。
傳回值
目前對象的參考。
CAdapt::operator ==
比較已調整型別的物件與 m_T。
bool operator== (const T& rSrc) const;
參數
rSrc
要比較之對象的參考。
傳回值
m_T 與 rSrc 之間的比較結果。