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 |
---|---|
Konstruktor |
Veřejné operátory
Jméno |
Popis |
---|---|
Vrátí odkaz const na m_T. |
|
Vrátí odkaz na m_T. |
|
Porovná objekt adaptovaného typu s m_T. |
|
Přiřadí objekt adaptovaného typu k m_T. |
|
Porovná objekt adaptovaného typu s m_T. |
Veřejné datové členy
Jméno |
Popis |
---|---|
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, CComPtr a CComQIPtr 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