Klasa CAdapt
Ten szablon jest używany do opakowywania klas, które ponownie definiują operator address-of, aby zwrócić coś innego niż adres obiektu.
Składnia
template <class T>
class CAdapt
Parametry
T
Typ dostosowany.
Elementy członkowskie
Konstruktory publiczne
Nazwa/nazwisko | opis |
---|---|
CAdapt::CAdapt | Konstruktor. |
Operatory publiczne
Nazwa/nazwisko | opis |
---|---|
CAdapt::operator const T& | const Zwraca odwołanie do m_T . |
CAdapt::operator T& | Zwraca odwołanie do m_T . |
CAdapt::, operator < | Porównuje obiekt typu dostosowanego z m_T . |
CAdapt::operator = | Przypisuje obiekt typu dostosowanego do m_T elementu . |
CAdapt::operator == | Porównuje obiekt typu dostosowanego z m_T . |
Publiczne elementy członkowskie danych
Nazwa/nazwisko | opis |
---|---|
CAdapt::m_T | Dostosowywane dane. |
Uwagi
CAdapt
to prosty szablon służący do zawijania klas, które ponownie definiują operator address-of (operator &
), aby zwrócić coś innego niż adres obiektu. Przykładami takich klas są klasy ATL CComBSTR
, CComPtr
i oraz CComQIPtr
klasa obsługi com kompilatora . _com_ptr_t
Wszystkie te klasy ponownie definiują operator address-of, aby zwrócić adres jednego z ich elementów członkowskich danych (BSTR w przypadku CComBSTR
, i wskaźnik interfejsu w przypadku innych klas).
CAdapt
Podstawową rolą jest ukrycie operatora adresu zdefiniowanego przez klasę T, ale nadal zachowuje cechy dostosowanej klasy. CAdapt
spełnia tę rolę, trzymając członka publicznego, m_T, typu T, oraz definiując operatory konwersji, operatory porównania i konstruktor kopiowania, aby umożliwić traktowanie specjalizacji CAdapt
tak, jakby były obiektami typu T.
Klasa CAdapt
adaptera jest przydatna, ponieważ niektóre klasy w stylu kontenera oczekują, że będą mogły uzyskać adresy zawartych w nich obiektów przy użyciu operatora address-of. Ponowne zdefiniowanie operatora address-of może spowodować problemy z tym wymaganiem, zazwyczaj powoduje błędy kompilacji i uniemożliwia wykorzystywanie typu niezaadaptowanego z klasami, które oczekują, że „po prostu ma działać”. CAdapt
umożliwia obejście tych problemów.
Zazwyczaj jest używany CAdapt
, gdy chcesz przechowywać CComBSTR
obiekty , CComPtr
, CComQIPtr
lub _com_ptr_t
w klasie w stylu kontenera. Najczęściej było to konieczne w przypadku kontenerów biblioteki standardowej C++ przed obsługą standardowego języka C++11, ale kontenery biblioteki standardowej C++11 automatycznie współpracują z typami, które mają przeciążone operator&()
. Biblioteka Standardowa osiąga to wewnętrznie przy użyciu polecenia std::addressof , aby uzyskać prawdziwe adresy obiektów.
Wymagania
Nagłówek: atlcomcli.h
CAdapt::CAdapt
Konstruktory umożliwiają konstruowanie domyślnego obiektu adaptera, skopiowane z obiektu dostosowanego typu lub skopiowane z innego obiektu adaptera.
CAdapt();
CAdapt(const T& rSrc);
CAdapt(const CAdapt& rSrCA);
CAdapt(T&& rSrCA); // (Visual Studio 2017)
CAdapt(CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
Parametry
rSrc
Zmienna typu, który jest dostosowywany do skopiowania do nowo skonstruowanego obiektu adaptera.
rSrCA
Obiekt adaptera, którego zawarte dane powinny zostać skopiowane (lub przeniesione) do nowo skonstruowanego obiektu karty.
CAdapt::m_T
Przechowuje dane, które są dostosowywane.
T m_T;
Uwagi
Dostęp do tego public
elementu członkowskiego danych można uzyskać bezpośrednio lub pośrednio z operatorem const T& i operator T&.
CAdapt::operator const T&
const
Zwraca odwołanie do elementu członkowskiego m_T, dzięki czemu obiekt adaptera może być traktowany tak, jakby był obiektem typu T.
operator const T&() const;
Wartość zwracana
Odwołanie const
do m_T
.
CAdapt::operator T&
Zwraca odwołanie do elementu członkowskiego m_T , dzięki czemu obiekt adaptera może być traktowany tak, jakby był obiektem typu T.
operator T&();
Wartość zwracana
Odwołanie do m_T
.
CAdapt::operator <
Porównuje obiekt typu dostosowanego z m_T.
bool operator<(const T& rSrc) const;
Parametry
rSrc
Odwołanie do obiektu do porównania.
Wartość zwracana
Wynik porównania między m_T
i rSrc.
CAdapt::operator =
Operator przypisania przypisuje argument rSrc do elementu członkowskiego danych m_T i zwraca bieżący obiekt adaptera.
CAdapt& operator= (const T& rSrc);
CAdapt& operator= (T&& rSrCA); // (Visual Studio 2017)
CAdapt& operator= (CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
Parametry
rSrc
Odwołanie do obiektu dostosowanego typu do skopiowania.
rSrCA
Odwołanie do obiektu do przeniesienia.
Wartość zwracana
Odwołanie do bieżącego obiektu.
CAdapt::operator ==
Porównuje obiekt typu dostosowanego z m_T.
bool operator== (const T& rSrc) const;
Parametry
rSrc
Odwołanie do obiektu do porównania.
Wartość zwracana
Wynik porównania między m_T i rSrc.