Sdílet prostřednictvím


Třída CAdapt

Tato šablona se používá k zabalení tříd, které mění definici operátoru address-of tak, aby vracely něco jiného než adresu objektu.

template < 
   class T 
> 
class CAdapt

Parametry

  • T
    Adaptovaný typ

Členy

Veřejné konstruktory

Jméno

Popis

CAdapt::CAdapt

Konstruktor

Veřejné operátory

Jméno

Popis

Const CAdapt::operator T &

Vrátí odkaz const na m_T.

CAdapt::operator t &

Vrátí odkaz na m_T.

CAdapt::operator <

Porovná objekt adaptovaného typu s m_T.

CAdapt::operator =

Přiřadí objekt adaptovaného typu k m_T.

CAdapt::operator ==

Porovná objekt adaptovaného typu s m_T.

Veřejné datové členy

Jméno

Popis

CAdapt::m_T

Adaptovaná data

Poznámky

CAdapt je jednoduchá šablona sloužící k zabalení tříd, které mění definici operátoru address-of (operator &) tak, aby vracely něco jiného než adresu objektu.Mezi příklady těchto tříd patří třídy CComBSTR, CComPtrCComQIPtr ATL a pomocná třída COM kompilátoru _com_ptr_t.Všechny tyto třídy mění definici operátoru address-of tak, aby vracely adresu jednoho ze svých datových členů (BSTR v případě třídy CComBSTR a ukazatel rozhraní v případě jiných tříd).

Primární role CAdapt je skrýt operátor address-of definovaný třídou T, ale stále zachovat charakteristiky této adaptované třídy.CAdapt tuto roli plní uložením veřejného člena m_T typu T a definováním převodních operátorů, porovnávacích operátorů a kopírovacího konstruktoru, což umožňuje, aby byly specializace CAdapt zpracovávány jako by to byly objekty typu T.

Adaptační třída CAdapt je užitečná, protože některé kontejnerové třídy očekávají, že pomocí operátoru address-of mohou získat adresy svých obsažených objektů.Změna definice operátoru address-of může tento požadavek zmařit a zpravidla způsobí chyby kompilace a zabrání použití neadaptovaného typu s třídami, které očekávají, že bude fungovat.CAdapt poskytuje způsob řešení těchto problémů.

CAdapt zpravidla použijete, pokud chcete v některé kontejnerové třídě uložit objekty CComBSTR, CComPtr, CComQIPtr nebo _com_ptr_t.Nejčastěji to bylo nezbytné pro kontejnery standardní knihovny C++ před podporou standardu C++ 11, ale kontejnery standardní knihovny C++ 11 automaticky fungují s typy, které přetěžují operator&().Standardní knihovna toho dosahuje interně pomocí std::addressof() a získává skutečné adresy objektů.

Požadavky

Hlavičkový soubor: atlcomcli.h

Viz také

Další zdroje

Přehled třídy ATL