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 |
---|---|
Přidá prvek (nebo všechny prvky v jiném seznamu) hlavy seznamu (provede nové hlavy). |
|
Zadní část seznamu (provede nové ocasu) přidá prvek (nebo všechny prvky v jiném seznamu). |
|
Prvek získá na dané pozici. |
|
Vrátí hlavy prvku seznamu (nemůže být prázdné). |
|
Iterace získá další prvek. |
|
Předchozí prvek získá pro iterace. |
|
Vrátí ocasu prvku seznamu (nemůže být prázdné). |
|
Odstraní prvek ze seznamu hlavy. |
|
Odstraní prvek zadní část seznamu. |
|
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