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.

template < 
   class T 
> 
class CAdapt

Parametry

  • T
    Typ dostosowany.

Elementy członkowskie

Konstruktory publiczne

Name

Opis

CAdapt::CAdapt

Konstruktor.

Operatory publiczne

Name

Opis

CAdapt::operator const t &

Zwraca odwołanie const 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.

CAdapt::operator ==

Porównuje obiekt typu dostosowanego z m_T.

Publiczne elementy członkowskie danych

Name

Opis

CAdapt::m_T

Dostosowywane dane.

Uwagi

CAdapt to pojedynczy szablon używany do opakowywania klas, które ponownie definiują operator address-of (operator &), aby zwrócić coś innego niż adres obiektu.Przykłady takich klas obejmują klasy ATL CComBSTR, CComPtr i CComQIPtr , a także klasę obsługi kompilatora COM _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).

Podstawową rolą CAdapt jest ukrycie operatora address-of zdefiniowanego przez klasę T, a jednocześnie zachowanie charakterystyk klasy dostosowanej.CAdapt spełnia tę rolę poprzez posiadanie publicznego elementu członkowskiego m_T, typu T oraz w drodze określenia operatorów konwersji, operatorów porównania oraz konstruktora kopiującego w celu umożliwienia, aby specjalizacje CAdapt były traktowane tak, jakby były obiektami typu T.

Klasa adaptera CAdapt jest przydatna, ponieważ niektóre klasy w stylu pojemnika oczekują, aby być w stanie uzyskać adresy ich zawartych obiektów za pomocą 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 zapewnia sposób obejścia tych problemów.

Zazwyczaj będziesz używać CAdapt, kiedy chcesz przechowywać obiekty CComBSTR, CComPtr, CComQIPtr lub _com_ptr_t w klasie w stylu kontenera.Było to najczęściej konieczne w przypadku kontenerów standardowej biblioteki C++, zanim dodano obsługę standardu C++11, ale kontenery standardowej biblioteki C++11 automatycznie pracują z typami, które przeciążają operator&().Standardowa biblioteka osiąga to za pomocą wewnętrznego korzystania z std::addressof(), aby uzyskać prawdziwe adresy obiektów.

Wymagania

Nagłówek: atlcomcli.h

Zobacz też

Inne zasoby

Omówienie klasy ATL