CTypedPtrList-Klasse

Stellt einen typsicheren "Wrapper" für Objekte der Klasse CPtrList bereit.

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

Parameter

  • BASE_CLASS
    Basisklasse der typisierten Zeigerlistenklasse; muss eine Zeigerlistenklasse (CObList oder CPtrList).

  • TYPE
    Typ der Elemente in der Basisklassenliste.

Mitglieder

850101a7.collapse_all(de-de,VS.110).gifÖffentliche Methoden

Name

Description

CTypedPtrList::AddHead

Fügt ein Element (oder alle Elemente in anderen Liste) den Kopf der Liste hinzu (erstellt einen neuen Kopf erstellt).

CTypedPtrList::AddTail

Fügt ein Element (oder alle Elemente in anderen Liste) dem Ende der Liste hinzu (erstellt ein neues Ende erstellt).

CTypedPtrList::GetAt

Ruft das Element in einer angegebenen Position ab.

CTypedPtrList::GetHead

Gibt das Anfangselement der Liste zurück (kann nicht leer sein).

CTypedPtrList::GetNext

Ruft das folgende Element zum Durchlaufen ab.

CTypedPtrList::GetPrev

Ruft das vorherige Element zum Durchlaufen ab.

CTypedPtrList::GetTail

Gibt das Endeelement der Liste zurück (kann nicht leer sein).

CTypedPtrList::RemoveHead

Entfernt das Element aus dem Anfang der Liste.

CTypedPtrList::RemoveTail

Entfernt das Element aus dem Ende der Liste.

CTypedPtrList::SetAt

Legt das Element in einer angegebenen Position fest.

Hinweise

Wenn Sie CTypedPtrList statt CObList oder CPtrList verwenden, beseitigen die C++-Typüberprüfungsfunktionshilfen die Fehler, die von nicht übereinstimmende Zeigertypen verursacht werden.

Darüber hinaus wird der CTypedPtrList Wrapper Großteil der Umwandlung aus, die erforderlich wäre, wenn Sie CObList oder CPtrList haben.

Da alle CTypedPtrList-Funktionen inline sind, hat Verwendung dieser Vorlage nicht wesentlich die Größe oder die Geschwindigkeit des Codes.

Die Listen, die von CObList abgeleitet werden, können serialisiert werden, aber die, die von CPtrList können nicht abgeleitet werden.

Wenn ein CTypedPtrList-Objekt gelöscht oder wenn seine Elemente entfernt werden, nur die Zeiger entfernt werden, nicht die Entitäten, die darauf verweisen.

Weitere Informationen zur Verwendung von CTypedPtrList, finden Sie in Artikel Auflistungen und Auf Vorlagen basierende Klassen.

Beispiel

Dieses Beispiel erstellt eine Instanz von CTypedPtrList, fügt ein Objekt hinzu, serialisiert die Liste auf den Datenträger und löscht dann das Objekt:

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

Vererbungshierarchie

BASE_CLASS

_CTypedPtrList

CTypedPtrList

Anforderungen

Header: afxtempl.h

Siehe auch

Referenz

Hierarchien-Diagramm

CPtrList-Klasse

CObList-Klasse

Konzepte

MFC-Beispiel COLLECT