Udostępnij za pośrednictwem


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

850101a7.collapse_all(pl-pl,VS.110).gifMetody publiczne

Nazwa

Opis

CTypedPtrList::AddHead

Dodaje element (lub wszystkie elementy na innej liście) szefowi listy (sprawia, że nowe head).

CTypedPtrList::AddTail

Dodaje element (lub wszystkich elementów listy) do ogona listy (sprawia, że nowe ogona).

CTypedPtrList::GetAt

Pobiera element w danym miejscu.

CTypedPtrList::GetHead

Zwraca wartość elementu nagłówkowego listy (nie może być puste).

CTypedPtrList::GetNext

Iterowanie pobiera następnego elementu.

CTypedPtrList::GetPrev

Iterowanie pobiera poprzedniego elementu.

CTypedPtrList::GetTail

Zwraca element ogona listy (nie może być puste).

CTypedPtrList::RemoveHead

Usuwa element z listy głowy.

CTypedPtrList::RemoveTail

Usuwa element z ogona listy.

CTypedPtrList::SetAt

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

Zobacz też

Informacje

Wykres hierarchii

Klasa CPtrList

Klasa cObList

Koncepcje

Próbki MFC ZEBRAĆ