Classe di 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 |
---|---|
Aggiunge un elemento (o tutti gli elementi in un altro elenco) all'inizio dell'elenco (effettua una nuova intestazione). |
|
Aggiunge un elemento (o tutti gli elementi in un altro elenco) la parte finale di elenco (effettua un nuovo elemento tail). |
|
Ottiene l'elemento nella posizione specificata. |
|
Restituisce l'elemento head dell'elenco (non può essere vuoto. |
|
Ottiene l'elemento seguente per l'iterazione. |
|
Ottiene l'elemento precedente per l'iterazione. |
|
Restituisce l'elemento tail di elenco (non può essere vuoto. |
|
Rimuove l'elemento dall'intestazione dell'elenco. |
|
Rimuove l'elemento dalla coda dell'elenco. |
|
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