Condividi tramite


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 CComBSTRe un puntatore di interfaccia nel caso delle altre classi).

CAdaptIl 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.

Vedi anche

Cenni preliminari sulla classe