Classe CAdapt
Questo modello viene utilizzato per eseguire il wrapping delle classi che consentono di ridefinire l'operatore address-of per restituire un valore diverso da quello dell'indirizzo dell'oggetto.
Sintassi
template <class T>
class CAdapt
Parametri
T
Il tipo adattato.
Membri
Costruttori pubblici
Nome | Descrizione |
---|---|
CAdapt::CAdapt | Costruttore. |
Operatori pubblici
Nome | Descrizione |
---|---|
CAdapt::operator const T& | Restituisce un const riferimento a m_T . |
CAdapt::operator T& | Restituisce un riferimento a m_T . |
CAdapt::operator < | Confronta un oggetto del tipo adattato con m_T . |
CAdapt::operator = | Assegna un oggetto del tipo adattato a m_T . |
CAdapt::operator == | Confronta un oggetto del tipo adattato con m_T . |
Membri dati pubblici
Nome | Descrizione |
---|---|
CAdapt::m_T | I dati che vengono adattati. |
Osservazioni:
CAdapt
è un modello semplice utilizzato per eseguire il wrapping delle classi che consentono di ridefinire l'operatore address-of (operator &
) per restituire un valore diverso da quello dell'indirizzo dell'oggetto. Esempi di tali classi includono le classi CComBSTR
, CComPtr
e CComQIPtr
di ATL e la classe di supporto COM del compilatore, _com_ptr_t
. Tutte queste classi ridefiniscono l'operatore address-of per restituire l'indirizzo di uno dei relativi membri dati (un BSTR nel caso di CComBSTR
e un puntatore di interfaccia nel caso delle altre classi).
CAdapt
Il ruolo primario di è nascondere l'operatore address-of definito dalla classe T, mantenendo comunque le caratteristiche della classe adattata. CAdapt
svolge questo ruolo tenendo un membro pubblico, m_T, di tipo T e definendo operatori di conversione, operatori di confronto e un costruttore di copia per consentire la gestione delle CAdapt
specializzazioni come se fossero oggetti di tipo T.
La classe CAdapt
dell'adattatore è utile in quanto alcune classi stile contenitore si prevede siano in grado di ottenere gli indirizzi dei rispettivi oggetti contenuti utilizzando address-of. La ridefinizione dell'operatore address-of può confondere questo requisito, in genere causando errori di compilazione e impedendo l'utilizzo del tipo non adattato con le classi che si aspettano che funzioni. CAdapt
fornisce un modo per risolvere questi problemi.
In genere, si utilizza CAdapt
quando si desidera archiviare gli oggetti CComBSTR
, CComPtr
, CComQIPtr
o _com_ptr_t
in una classe stile contenitore. Questa operazione è normalmente necessaria per i contenitori della libreria standard di C++ precedenti al supporto per lo standard C++11, ma i contenitori della libreria standard C++11 automaticamente utilizzano i tipi che hanno eseguito l'overload di operator&()
. La libreria standard ottiene questo risultato internamente usando std::addressof per ottenere gli indirizzi reali degli oggetti.
Requisiti
Intestazione: atlcomcli.h
CAdapt::CAdapt
I costruttori consentono di costruire per impostazione predefinita un oggetto adapter, copiarlo da un oggetto del tipo adattato o copiarlo da un altro oggetto adapter.
CAdapt();
CAdapt(const T& rSrc);
CAdapt(const CAdapt& rSrCA);
CAdapt(T&& rSrCA); // (Visual Studio 2017)
CAdapt(CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
Parametri
rSrc
Variabile del tipo da adattare per essere copiata nell'oggetto adattatore appena costruito.
rSrCA
Oggetto adapter i cui dati contenuti devono essere copiati (o spostati) nell'oggetto adattatore appena costruito.
CAdapt::m_T
Contiene i dati da adattare.
T m_T;
Osservazioni:
Questo public
membro dati può essere accessibile direttamente o indirettamente con l'operatore const T& e l'operatore T&.
CAdapt::operator const T&
Restituisce un const
riferimento al membro m_T , consentendo di considerare l'oggetto adapter come se fosse un oggetto di tipo T.
operator const T&() const;
Valore restituito
Riferimento const
a m_T
.
CAdapt::operator T&
Restituisce un riferimento al membro m_T , che consente di considerare l'oggetto adapter come se fosse un oggetto di tipo T.
operator T&();
Valore restituito
Riferimento a m_T
.
CAdapt::operator <
Confronta un oggetto del tipo adattato con m_T.
bool operator<(const T& rSrc) const;
Parametri
rSrc
Riferimento all'oggetto da confrontare.
Valore restituito
Risultato del confronto tra m_T
e rSrc.
CAdapt::operator =
L'operatore di assegnazione assegna l'argomento rSrc al membro dati m_T e restituisce l'oggetto adapter corrente.
CAdapt& operator= (const T& rSrc);
CAdapt& operator= (T&& rSrCA); // (Visual Studio 2017)
CAdapt& operator= (CAdapt<T>&& rSrCA) noexcept; // (Visual Studio 2017)
Parametri
rSrc
Riferimento a un oggetto del tipo adattato da copiare.
rSrCA
Riferimento a un oggetto da spostare.
Valore restituito
Riferimento all'oggetto corrente.
CAdapt::operator ==
Confronta un oggetto del tipo adattato con m_T.
bool operator== (const T& rSrc) const;
Parametri
rSrc
Riferimento all'oggetto da confrontare.
Valore restituito
Risultato del confronto tra m_T e rSrc.