Sdílet prostřednictvím


CAdapt – třída

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.

Syntaxe

template <class T>
class CAdapt

Parametry

T
Adaptovaný typ

Členové

Veřejné konstruktory

Název Popis
CAdapt::CAdapt Konstruktor

Veřejné operátory

Název Popis
CAdapt::operator const T& const Vrátí odkaz na m_T.
CAdapt::operator T& Vrátí odkaz na m_T.
CAdapt::operator < Porovná objekt přizpůsobeného typu s m_T.
CAdapt::operator = Přiřadí objekt přizpůsobeného typu m_T.
CAdapt::operator == Porovná objekt přizpůsobeného typu s m_T.

Veřejné datové členy

Název Popis
CAdapt::m_T Adaptovaná data

Poznámky

CAdapt je jednoduchá šablona používaná k zabalení tříd, které předefinují operátor adresy (operator &) tak, aby vrátily něco jiného než adresu objektu. Mezi příklady takových tříd patří ATL CComBSTR, CComPtra třídy, CComQIPtr a kompilátor COM třídy podpory, _com_ptr_t. Tyto třídy všechny předefinují operátor adresy, aby vrátil adresu jednoho z jejich datových členů (BSTR v případě CComBSTR, a ukazatel rozhraní v případě ostatních tříd).

CAdaptPrimární role spočívá v skrytí operátoru adresy definovaného třídou T, ale přesto zachovat charakteristiky upravené třídy. CAdaptplní tuto úlohu tím, že drží veřejného člena m_T typu T a definuje operátory převodu, relační operátory CAdapt a konstruktor kopírování, aby bylo možné se specializacemi považovat za objekty typu T.

Třída CAdapt adaptéru je užitečná, protože některé třídy typu kontejneru očekávají, že budou moci získat adresy jejich obsažených objektů pomocí operátoru adresy. 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, jak tyto problémy obejít.

Obvykle se používá CAdapt , když chcete uložit CComBSTR, CComPtr, CComQIPtr, nebo _com_ptr_t objekty ve třídě typu kontejneru. To bylo nejčastěji nutné pro kontejnery standardní knihovny C++ před podporou C++11 Standard, ale kontejnery C++11 standardní knihovny automaticky pracují s typy, které jsou přetížené operator&(). Standardní knihovna toho dosahuje interně pomocí std::addressof k získání skutečných adres objektů.

Požadavky

Hlavička: atlcomcli.h

CAdapt::CAdapt

Konstruktory umožňují, aby objekt adaptéru byl vytvořen jako výchozí, zkopírován z objektu přizpůsobeného typu nebo zkopírován z jiného objektu adaptéru.

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
Proměnná typu, který je upraven tak, aby se zkopíroval do nově vytvořeného objektu adaptéru.

rSrCA
Objekt adaptéru, jehož obsažená data by se měla zkopírovat (nebo přesunout) do nově vytvořeného objektu adaptéru.

CAdapt::m_T

Uchovává přizpůsobená data.

T m_T;

Poznámky

K tomuto public datovému členu lze přistupovat přímo nebo nepřímo pomocí operátoru const T& a operátor T&&.

CAdapt::operator const T&

const Vrátí odkaz na m_T člen, který umožňuje, aby objekt adaptéru byl považován za objekt typu T.

operator const T&() const;

Návratová hodnota

Odkaz const na m_T.

CAdapt::operator T&

Vrátí odkaz na m_T člen, který umožňuje, aby objekt adaptéru byl považován za objekt typu T.

operator T&();

Návratová hodnota

Odkaz na m_T.

CAdapt::operator <

Porovná objekt přizpůsobeného typu s m_T.

bool operator<(const T& rSrc) const;

Parametry

rSrc
Odkaz na objekt, který se má porovnat.

Návratová hodnota

Výsledek porovnání mezi m_T a rSrc.

CAdapt::operator =

Operátor přiřazení přiřadí argument rSrc m_T datovému členu a vrátí aktuální objekt adaptéru.

CAdapt& operator= (const T& rSrc);
CAdapt& operator= (T&& rSrCA); // (Visual Studio 2017)
CAdapt& operator= (CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)

Parametry

rSrc
Odkaz na objekt přizpůsobeného typu, který se má zkopírovat.

rSrCA
Odkaz na objekt, který se má přesunout.

Návratová hodnota

Odkaz na aktuální objekt.

CAdapt::operator ==

Porovná objekt přizpůsobeného typu s m_T.

bool operator== (const T& rSrc) const;

Parametry

rSrc
Odkaz na objekt, který se má porovnat.

Návratová hodnota

Výsledek porovnání mezi m_T a rSrc.

Viz také

Přehled třídy