Classe de CTypedPtrList
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 |
---|---|
Ajoute un élément (ou tous les autres éléments de liste) au début de la liste (fait une nouvelle tête). |
|
Ajoute un élément (ou tous les autres éléments de liste) à la fin de la liste (fait une nouvelle file). |
|
Obtient l'élément à une position donnée. |
|
Retourne l'élément head de la liste (ne peut pas être vide). |
|
Obtient l'élément pour itérer. |
|
Obtient l'élément précédent pour itérer. |
|
Retourne l'élément de fin de la liste (ne peut pas être vide). |
|
Supprime l'élément de le début de la liste. |
|
Supprime l'élément de la fin de la liste. |
|
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