Klasa CTypedPtrList
Zawiera typ palety "otoki" dla obiektów klasy CPtrList.
template< class BASE_CLASS, class TYPE >
class CTypedPtrList : public BASE_CLASS
Parametry
BASE_CLASS
Klasa podstawowa klasy list wpisywanych wskaźnik; muszą być klasy listy wskaźnik (CObList lub CPtrList).TYPE
Typ elementów przechowywanych na liście klasa bazowa.
Członkowie
Metody publiczne
Nazwa |
Opis |
---|---|
Dodaje element (lub wszystkie elementy na innej liście) szefowi listy (sprawia, że nowe head). |
|
Dodaje element (lub wszystkich elementów listy) do ogona listy (sprawia, że nowe ogona). |
|
Pobiera element w danym miejscu. |
|
Zwraca wartość elementu nagłówkowego listy (nie może być puste). |
|
Iterowanie pobiera następnego elementu. |
|
Iterowanie pobiera poprzedniego elementu. |
|
Zwraca element ogona listy (nie może być puste). |
|
Usuwa element z listy głowy. |
|
Usuwa element z ogona listy. |
|
Ustawia elementu w danym miejscu. |
Uwagi
Kiedy używać CTypedPtrList zamiast CObList lub CPtrList, C++ sprawdzanie typu instrumentu pomaga wyeliminować błędy spowodowane przez wskaźnik niezgodność typów.
Ponadto CTypedPtrList otoki wykonuje wiele odlewania, które byłyby wymagane, jeśli użyto CObList lub CPtrList.
Ponieważ wszystkie CTypedPtrList funkcje są wbudowane, użyj tego szablonu nie wpływa znacząco na rozmiar lub prędkości kodu.
List pochodzące z CObList można szeregować, ale te pochodzące z CPtrList nie.
Gdy CTypedPtrList usunąć obiektu lub po usunięciu jego elementy są usuwane tylko wskaźników, nie podmioty odwołują.
Aby uzyskać więcej informacji na temat używania CTypedPtrList, zobacz artykuły kolekcji i na podstawie szablonu klasy.
Przykład
W tym przykładzie tworzona jest instancja CTypedPtrList, dodaje jeden obiekt, szereguje wykaz na dysku i usuwa obiekt:
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 dziedziczenia
BASE_CLASS
_CTypedPtrList
CTypedPtrList
Wymagania
Nagłówek: afxtempl.h