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
Öffentliche Methoden
Name |
Description |
---|---|
Fügt ein Element (oder alle Elemente in anderen Liste) den Kopf der Liste hinzu (erstellt einen neuen Kopf erstellt). |
|
Fügt ein Element (oder alle Elemente in anderen Liste) dem Ende der Liste hinzu (erstellt ein neues Ende erstellt). |
|
Ruft das Element in einer angegebenen Position ab. |
|
Gibt das Anfangselement der Liste zurück (kann nicht leer sein). |
|
Ruft das folgende Element zum Durchlaufen ab. |
|
Ruft das vorherige Element zum Durchlaufen ab. |
|
Gibt das Endeelement der Liste zurück (kann nicht leer sein). |
|
Entfernt das Element aus dem Anfang der Liste. |
|
Entfernt das Element aus dem Ende der Liste. |
|
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