Kelas CAdapt
Templat ini digunakan untuk membungkus kelas yang menetapkan ulang alamat operator untuk mengembalikan sesuatu selain alamat objek.
Sintaks
template <class T>
class CAdapt
Parameter
T
Jenis yang diadaptasi.
Anggota
Konstruktor Publik
Nama | Deskripsi |
---|---|
CAdapt::CAdapt | Konstruktor. |
Operator Publik
Nama | Deskripsi |
---|---|
CAdapt::operator const T& | Mengembalikan const referensi ke m_T . |
CAdapt::operator T& | Mengembalikan referensi ke m_T . |
CAdapt::operator < | Membandingkan objek dari jenis yang diadaptasi dengan m_T . |
CAdapt::operator = | Menetapkan objek dari jenis yang diadaptasi ke m_T . |
CAdapt::operator == | Membandingkan objek dari jenis yang diadaptasi dengan m_T . |
Anggota Data Publik
Nama | Deskripsi |
---|---|
CAdapt::m_T | Data yang sedang diadaptasi. |
Keterangan
CAdapt
adalah templat sederhana yang digunakan untuk membungkus kelas yang menetapkan ulang alamat operator (operator &
) untuk mengembalikan sesuatu selain alamat objek. Contoh kelas tersebut termasuk kelas ATL CComBSTR
, , CComPtr
dan , dan CComQIPtr
, dan kelas dukungan COM kompilator, _com_ptr_t
. Semua kelas ini menentukan ulang alamat operator untuk mengembalikan alamat salah satu anggota data mereka (BSTR dalam kasus CComBSTR
, dan penunjuk antarmuka dalam kasus kelas lain).
CAdapt
Peran utamanya adalah menyembunyikan alamat operator yang ditentukan oleh kelas T, namun masih mempertahankan karakteristik kelas yang disesuaikan. CAdapt
Memenuhi peran ini dengan memegang anggota publik, m_T, jenis T, dan dengan menentukan operator konversi, operator perbandingan, dan konstruktor salinan untuk memungkinkan spesialisasi CAdapt
diperlakukan seolah-olah mereka adalah objek jenis T.
Kelas adaptor CAdapt
berguna karena beberapa kelas gaya kontainer mengharapkan untuk dapat memperoleh alamat objek yang terkandung menggunakan alamat operator. Pendefinisian ulang alamat operator dapat membingungkan persyaratan ini, biasanya menyebabkan kesalahan kompilasi dan mencegah penggunaan jenis yang tidak disesuaikan dengan kelas yang mengharapkannya "hanya berfungsi". CAdapt
menyediakan cara untuk mengatasi masalah tersebut.
Biasanya, Anda akan menggunakan CAdapt
ketika Anda ingin menyimpan CComBSTR
, , CComPtr
CComQIPtr
, atau _com_ptr_t
objek di kelas gaya kontainer. Ini paling umum diperlukan untuk kontainer Pustaka Standar C++ sebelum dukungan untuk Standar C++11, tetapi kontainer Pustaka Standar C++11 secara otomatis bekerja dengan jenis yang telah kelebihan beban operator&()
. Pustaka Standar mencapai ini dengan secara internal menggunakan std::addressof untuk mendapatkan alamat objek yang sebenarnya.
Persyaratan
Header: atlcomcli.h
CAdapt::CAdapt
Konstruktor memungkinkan objek adaptor dibuat secara default, disalin dari objek jenis yang diadaptasi, atau disalin dari objek adaptor lain.
CAdapt();
CAdapt(const T& rSrc);
CAdapt(const CAdapt& rSrCA);
CAdapt(T&& rSrCA); // (Visual Studio 2017)
CAdapt(CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
Parameter
rSrc
Variabel jenis yang diadaptasi untuk disalin ke dalam objek adaptor yang baru dibangun.
rSrCA
Objek adaptor yang berisi data harus disalin (atau dipindahkan) ke objek adaptor yang baru dibangun.
CAdapt::m_T
Menyimpan data yang sedang diadaptasi.
T m_T;
Keterangan
Anggota data ini public
dapat diakses secara langsung atau tidak langsung dengan operator const T& dan operator T&.
CAdapt::operator const T&
const
Mengembalikan referensi ke anggota m_T, memungkinkan objek adaptor diperlakukan seolah-olah itu adalah objek jenis T.
operator const T&() const;
Tampilkan Nilai
Referensi const
ke m_T
.
CAdapt::operator T&
Mengembalikan referensi ke anggota m_T , memungkinkan objek adaptor diperlakukan seolah-olah itu adalah objek jenis T.
operator T&();
Tampilkan Nilai
Referensi ke m_T
.
CAdapt::operator <
Membandingkan objek dari jenis yang disesuaikan dengan m_T.
bool operator<(const T& rSrc) const;
Parameter
rSrc
Referensi ke objek yang akan dibandingkan.
Tampilkan Nilai
Hasil perbandingan antara m_T
dan rSrc.
CAdapt::operator =
Operator penugasan menetapkan argumen, rSrc, ke anggota data m_T dan mengembalikan objek adaptor saat ini.
CAdapt& operator= (const T& rSrc);
CAdapt& operator= (T&& rSrCA); // (Visual Studio 2017)
CAdapt& operator= (CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
Parameter
rSrc
Referensi ke objek dari jenis yang diadaptasi untuk disalin.
rSrCA
Referensi ke objek yang akan dipindahkan.
Tampilkan Nilai
Referensi ke objek saat ini.
CAdapt::operator ==
Membandingkan objek dari jenis yang disesuaikan dengan m_T.
bool operator== (const T& rSrc) const;
Parameter
rSrc
Referensi ke objek yang akan dibandingkan.
Tampilkan Nilai
Hasil perbandingan antara m_T dan rSrc.