Partager via


CTypedPtrList, classe

Fournit un wrapper de type sécurisé pour les objets de classe CPtrList.

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

Paramètres

  • BASE_CLASS
    Classe de base de la classe typée de liste de pointeur ; doit être une classe de liste de pointeur (CObList ou CPtrList).

  • TYPE
    Type des éléments stockés dans la liste de classes de base.

Membres

Méthodes publiques

Nom

Description

CTypedPtrList::AddHead

Ajoute un élément (ou tous les autres éléments de liste) au début de la liste (fait une nouvelle tête).

CTypedPtrList::AddTail

Ajoute un élément (ou tous les autres éléments de liste) à la fin de la liste (fait une nouvelle file).

CTypedPtrList::GetAt

Obtient l'élément à une position donnée.

CTypedPtrList::GetHead

Retourne l'élément head de la liste (ne peut pas être vide).

CTypedPtrList::GetNext

Obtient l'élément pour itérer.

CTypedPtrList::GetPrev

Obtient l'élément précédent pour itérer.

CTypedPtrList::GetTail

Retourne l'élément de fin de la liste (ne peut pas être vide).

CTypedPtrList::RemoveHead

Supprime l'élément de le début de la liste.

CTypedPtrList::RemoveTail

Supprime l'élément de la fin de la liste.

CTypedPtrList::SetAt

Définit l'élément à une position donnée.

Notes

Lorsque vous utilisez CTypedPtrList plutôt qu' CObList ou CPtrList, les aide de la fonctionnalité de vérification de type C++ éliminent des erreurs provoquées par les types pointeur incompatibles.

En outre, le wrapper d' CTypedPtrList effectue une grande partie du cast qui est nécessaire si vous avez utilisé CObList ou CPtrList.

Étant donné que toutes fonctions d' CTypedPtrList sont inline, l'utilisation de ce modèle n'affecte pas considérablement la taille ou la vitesse de votre code.

Les listes dérivées d' CObList peuvent être sérialisées, mais celles dérivées d' CPtrList ne peuvent pas.

Lorsqu'un objet d' CTypedPtrList est supprimé, ou lorsque ses éléments sont supprimés, seuls les pointeurs sont supprimés, pas les entités qu'ils référencent.

Pour plus d'informations sur l'utilisation CTypedPtrList, consultez les articles collections et Classes basée sur les rôles.

Exemple

Cet exemple crée une instance d' CTypedPtrList, ajoute un objet, sérialise la liste sur le disque, puis supprime l'objet :

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;
}

Hiérarchie d'héritage

BASE_CLASS

_CTypedPtrList

CTypedPtrList

Configuration requise

Header: afxtempl.h

Voir aussi

Référence

Graphique de la hiérarchie

CPtrList, classe

CObList, classe

Concepts

L'exemple MFC COLLECTENT