Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 |
---|---|
Konstruktor. |
Operatory publiczne
Name |
Opis |
---|---|
Zwraca odwołanie const do m_T. |
|
Zwraca odwołanie do m_T. |
|
Porównuje obiekt typu dostosowanego z m_T. |
|
Przypisuje obiekt typu dostosowanego do m_T. |
|
Porównuje obiekt typu dostosowanego z m_T. |
Publiczne elementy członkowskie danych
Name |
Opis |
---|---|
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