Condividi tramite


Classe CTypedPtrList

Fornisce un "wrapper" indipendente dai tipi per gli oggetti di classe CPtrList.

template< class BASE_CLASS, class TYPE >
class CTypedPtrList : public BASE_CLASS

Parametri

  • BASE_CLASS
    Classe base della classe tipizzata dell'elenco del puntatore, deve essere una classe dell'elenco del puntatore (CObList o CPtrList).

  • TYPE
    Tipo degli elementi archiviati nell'elenco di classi base.

Membri

Metodi pubblici

Nome

Descrizione

CTypedPtrList::AddHead

Aggiunge un elemento (o tutti gli elementi in un altro elenco) all'inizio dell'elenco (effettua una nuova intestazione).

CTypedPtrList::AddTail

Aggiunge un elemento (o tutti gli elementi in un altro elenco) la parte finale di elenco (effettua un nuovo elemento tail).

CTypedPtrList::GetAt

Ottiene l'elemento nella posizione specificata.

CTypedPtrList::GetHead

Restituisce l'elemento head dell'elenco (non può essere vuoto.

CTypedPtrList::GetNext

Ottiene l'elemento seguente per l'iterazione.

CTypedPtrList::GetPrev

Ottiene l'elemento precedente per l'iterazione.

CTypedPtrList::GetTail

Restituisce l'elemento tail di elenco (non può essere vuoto.

CTypedPtrList::RemoveHead

Rimuove l'elemento dall'intestazione dell'elenco.

CTypedPtrList::RemoveTail

Rimuove l'elemento dalla coda dell'elenco.

CTypedPtrList::SetAt

Imposta l'elemento nel percorso specificato.

Note

Quando si utilizza CTypedPtrList anziché CObList o CPtrList, le guide di funzionalità di controllo dei tipi C++ eliminando gli errori causati dai tipi di puntatore non corrispondenti.

Inoltre, il wrapper CTypedPtrList esegue gran parte del cast sarà richiesta che si utilizzi CObList o CPtrList.

Poiché le funzioni CTypedPtrList sono inline, l'utilizzo di questo modello non influisce in modo significativo la dimensione o la velocità del codice.

Gli elenchi derivati da CObList possono essere serializzati, ma quelli derivati da CPtrList non è.

Quando un oggetto CTypedPtrList viene eliminato, oppure quando gli elementi vengono rimossi, solo i puntatori vengono rimossi, non le entità che fanno riferimento a.

Per ulteriori informazioni su l CTypedPtrList, vedere gli articoli Raccolte e Le classi Basate su modelli.

Esempio

In questo esempio viene creata un'istanza CTypedPtrList, viene aggiunto un oggetto, serializza l'elenco su disco e quindi rimuove l'oggetto:

typedef CTypedPtrList<CObList, CMyObject*>  CMyList;
CMyList ml;
CMyObject* pMyObject = new CMyObject();
ml.AddTail(pMyObject);

CFileException e;
CFile myFile; 
myFile.Open(_T("CTypedPtrList_File.txt"), 
   CFile::modeCreate|CFile::modeWrite, &e);
CArchive ar(&myFile, CArchive::store);
ml.Serialize(ar);

ar.Close();
myFile.Close(); 

while (!ml.IsEmpty())
{
   delete ml.GetHead();
   ml.RemoveHead();
}
class CMyObject : public CObject
{
public:
     int i;
     void Serialize(CArchive& ar);
     CMyObject() { i = 9876;}
protected:
     DECLARE_SERIAL(CMyObject)
};

IMPLEMENT_SERIAL(CMyObject, CObject, 0)  

void CMyObject::Serialize(CArchive& ar)
{
    CObject::Serialize(ar);
    if(ar.IsStoring())
         ar << i;
    else
         ar >> i;
}

Gerarchia di ereditarietà

BASE_CLASS

_CTypedPtrList

CTypedPtrList

Requisiti

Header: afxtempl.h

Vedere anche

Riferimenti

Grafico delle gerarchie

Classe CPtrList

Classe CObList

Concetti

L'esempio MFC SI RACCOGLIE