Sdílet prostřednictvím


Třída CTypedPtrList

Poskytuje objekty třídy typu bezpečné "obálky" CPtrList .

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

Parametry

  • BASE_CLASS
    Základní třídy zadaný ukazatel seznam tříd; musí být ukazatel seznamu třídy ( CObList nebo CPtrList ).

  • TYPE
    Typ uložených v seznamu základní třída prvků.

Členy

Veřejné metody

Název

Description

CTypedPtrList::AddHead

Přidá prvek (nebo všechny prvky v jiném seznamu) hlavy seznamu (provede nové hlavy).

CTypedPtrList::AddTail

Zadní část seznamu (provede nové ocasu) přidá prvek (nebo všechny prvky v jiném seznamu).

CTypedPtrList::GetAt

Prvek získá na dané pozici.

CTypedPtrList::GetHead

Vrátí hlavy prvku seznamu (nemůže být prázdné).

CTypedPtrList::GetNext

Iterace získá další prvek.

CTypedPtrList::GetPrev

Předchozí prvek získá pro iterace.

CTypedPtrList::GetTail

Vrátí ocasu prvku seznamu (nemůže být prázdné).

CTypedPtrList::RemoveHead

Odstraní prvek ze seznamu hlavy.

CTypedPtrList::RemoveTail

Odstraní prvek zadní část seznamu.

CTypedPtrList::SetAt

Nastaví prvek na dané pozici.

Poznámky

Při použití CTypedPtrList namísto CObList nebo CPtrList , C++ kontrola typu zařízení pomáhá eliminovat chyby způsobené ukazatel Neshoda typů.

Kromě toho CTypedPtrList wrapper provádí většinu obsazení, který bude vyžadován, pokud CObList nebo CPtrList .

Protože všechny CTypedPtrList funkce jsou vložené, použití této šablony neovlivňuje významně velikost nebo rychlost vašeho kódu.

Seznamy odvozené z CObList lze serializovat, ale systémy odvozené z CPtrList nelze.

Když CTypedPtrList je odstraněn objekt nebo odebraný jeho prvky jsou odebrány pouze ukazatele, není subjekty odkazují.

Další informace o použití CTypedPtrList , naleznete v článcích kolekce a založený na šabloně třídy.

Příklad

Tento příklad vytvoří instanci CTypedPtrList , přidá jeden objekt, řadí seznamu na disk a pak odstraní 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;
}

Hierarchii dědičnosti

BASE_CLASS

_CTypedPtrList

CTypedPtrList

Požadavky

Záhlaví: afxtempl.h

Viz také

Referenční dokumentace

Graf hierarchie

Třída CPtrList

Třída cObList

Koncepty

Vzorek MFC shromáždit