Udostępnij za pośrednictwem


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_Telementu .
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, CComPtri 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).

CAdaptPodstawową rolą jest ukrycie operatora adresu zdefiniowanego przez klasę T, ale nadal zachowuje cechy dostosowanej klasy. CAdaptspeł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ć CComBSTRobiekty , CComPtr, CComQIPtrlub _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.

Zobacz też

Omówienie klasy