Aracılığıyla paylaş


CTypedPtrList Sınıfı

sınıfı CPtrListnesneleri için tür açısından güvenli bir "sarmalayıcı" sağlar.

Sözdizimi

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

Parametreler

BASE_CLASS
Yazılan işaretçi listesi sınıfının temel sınıfı; bir işaretçi listesi sınıfı ( CObList veya CPtrList) olmalıdır.

TÜRÜ
Temel sınıf listesinde depolanan öğelerin türü.

Üyeler

Genel Yöntemler

Ad Tanım
CTypedPtrList::AddHead Listenin başına bir öğe (veya başka bir listedeki tüm öğeler) ekler (yeni bir kafa oluşturur).
CTypedPtrList::AddTail Listenin kuyruğuna bir öğe (veya başka bir listedeki tüm öğeler) ekler (yeni bir kuyruk oluşturur).
CTypedPtrList::GetAt Öğeyi belirli bir konumda alır.
CTypedPtrList::GetHead Listenin baş öğesini döndürür (boş olamaz).
CTypedPtrList::GetNext Yineleme için sonraki öğeyi alır.
CTypedPtrList::GetPrev Yineleme için önceki öğeyi alır.
CTypedPtrList::GetTail Listenin kuyruk öğesini döndürür (boş olamaz).
CTypedPtrList::RemoveHead öğesini listenin başından kaldırır.
CTypedPtrList::RemoveTail öğesini listenin kuyruğundan kaldırır.
CTypedPtrList::SetAt Öğesini belirli bir konumda ayarlar.

Açıklamalar

veya CPtrListyerine CObList kullandığınızdaCTypedPtrList, C++ tür denetimi özelliği eşleşmeyen işaretçi türlerinin neden olduğu hataların giderilmesine yardımcı olur.

Buna ek olarak, CTypedPtrList sarmalayıcı veya CPtrListkullanırsanız CObList gerekli olan atamanın büyük bir kısmını gerçekleştirir.

Tüm CTypedPtrList işlevler satır içi olduğundan, bu şablonun kullanılması kodunuzun boyutunu veya hızını önemli ölçüde etkilemez.

'dan CObList türetilen listeler seri hale getirilebilir, ancak türetilenler CPtrList seri hale getirilemez.

Bir CTypedPtrList nesne silindiğinde veya öğeleri kaldırıldığında, başvurdıkları varlıklar değil, yalnızca işaretçiler kaldırılır.

kullanma CTypedPtrListhakkında daha fazla bilgi için Koleksiyonlar ve Şablon Tabanlı Sınıflar makalelerine bakın.

Örnek

Bu örnek bir örneğini CTypedPtrListoluşturur, bir nesne ekler, listeyi diske serileştirir ve sonra nesneyi siler:

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;
}

Devralma Hiyerarşisi

BASE_CLASS

_CTypedPtrList

CTypedPtrList

Gereksinimler

Üst bilgi: afxtempl.h

CTypedPtrList::AddHead

Bu üye işlevi ::AddHead öğesini çağırır.BASE_CLASS

POSITION AddHead(TYPE newElement);
void AddHead(CTypedPtrList<BASE_CLASS, TYPE>* pNewList);

Parametreler

TÜRÜ
Temel sınıf listesinde depolanan öğelerin türü.

newElement
Bu listeye eklenecek nesne işaretçisi. NULL değere izin verilir.

BASE_CLASS
Yazılan işaretçi listesi sınıfının temel sınıfı; bir işaretçi listesi sınıfı ( CObList veya CPtrList) olmalıdır.

pNewList
Başka bir CTypedPtrList nesnesine işaretçi. pNewList içindeki öğeler bu listeye eklenir.

İade Değeri

İlk sürüm, yeni eklenen öğenin POSITION değerini döndürür.

Açıklamalar

İlk sürüm, listenin başına yeni bir öğe ekler. İkinci sürüm, kafadan önce başka bir öğe listesi ekler.

CTypedPtrList::AddTail

Bu üye işlevi ::AddTail öğesini çağırır.BASE_CLASS

POSITION AddTail(TYPE newElement);
void AddTail(CTypedPtrList<BASE_CLASS, TYPE>* pNewList);

Parametreler

TÜRÜ
Temel sınıf listesinde depolanan öğelerin türü.

newElement
Bu listeye eklenecek nesne işaretçisi. NULL değere izin verilir.

BASE_CLASS
Yazılan işaretçi listesi sınıfının temel sınıfı; bir işaretçi listesi sınıfı ( CObList veya CPtrList) olmalıdır.

pNewList
Başka bir CTypedPtrList nesnesine işaretçi. pNewList içindeki öğeler bu listeye eklenir.

İade Değeri

İlk sürüm, yeni eklenen öğenin POSITION değerini döndürür.

Açıklamalar

İlk sürüm, listenin kuyruğundan sonra yeni bir öğe ekler. İkinci sürüm, listenin kuyruğundan sonra başka bir öğe listesi ekler.

CTypedPtrList::GetAt

POSITION türünde bir değişken, listenin anahtarıdır.

TYPE& GetAt(POSITION position);
TYPE GetAt(POSITION position) const;

Parametreler

TÜRÜ
Listede depolanan öğelerin türünü belirten şablon parametresi.

Konum
Önceki GetHeadPosition veya Find üye işlev çağrısı tarafından döndürülen POSITION değeri.

İade Değeri

Listeye bir işaretçi const CTypedPtrListGetAt aracılığıyla erişilirse, type şablon parametresi tarafından belirtilen türde bir işaretçi döndürür. Bu, işlevin yalnızca atama deyiminin sağ tarafında kullanılmasını sağlar ve böylece listeyi değişiklikten korur.

Listeye doğrudan veya bir işaretçi CTypedPtrListaracılığıyla erişiliyorsa, GetAt şablon parametresi TYPE tarafından belirtilen türde bir işaretçiye başvuru döndürür. Bu, işlevin atama deyiminin her iki tarafında kullanılmasını sağlar ve böylece liste girdilerinin değiştirilmesine izin verir.

Açıklamalar

Dizinle aynı değildir ve POSITION değerini kendiniz çalıştıramazsınız. GetAt belirli bir konumla ilişkili işaretçiyi CObject alır.

POSITION değerinizin listedeki geçerli bir konumu temsildiğinden emin olmanız gerekir. Geçersizse, Microsoft Foundation Sınıf Kitaplığı'nın Hata Ayıklama sürümü onaylar.

Bu satır içi işlev ::GetAt öğesini çağırır.BASE_CLASS

CTypedPtrList::GetHead

Bu listenin baş öğesini temsil eden işaretçiyi alır.

TYPE& GetHead();
TYPE GetHead() const;

Parametreler

TÜRÜ
Listede depolanan öğelerin türünü belirten şablon parametresi.

İade Değeri

Listeye bir işaretçi const CTypedPtrListGetHead aracılığıyla erişilirse, type şablon parametresi tarafından belirtilen türde bir işaretçi döndürür. Bu, işlevin yalnızca atama deyiminin sağ tarafında kullanılmasını sağlar ve böylece listeyi değişiklikten korur.

Listeye doğrudan veya bir işaretçi CTypedPtrListaracılığıyla erişiliyorsa, GetHead şablon parametresi TYPE tarafından belirtilen türde bir işaretçiye başvuru döndürür. Bu, işlevin atama deyiminin her iki tarafında kullanılmasını sağlar ve böylece liste girdilerinin değiştirilmesine izin verir.

Açıklamalar

çağrısından GetHeadönce listenin boş olmadığından emin olmanız gerekir. Liste boşsa, Microsoft Foundation Sınıf Kitaplığı'nın Hata Ayıklama sürümü onaylar. Listenin öğeler içerdiğini doğrulamak için IsEmpty kullanın.

CTypedPtrList::GetNext

rPosition tarafından tanımlanan liste öğesini alır, ardından rPosition değerini listedeki bir sonraki girdinin POSITION değerine ayarlar.

TYPE& GetNext(POSITION& rPosition);
TYPE GetNext(POSITION& rPosition) const;

Parametreler

TÜRÜ
Bu listede yer alan öğelerin türünü belirten şablon parametresi.

Rposition
Önceki GetNextbir , GetHeadPositionveya diğer üye işlev çağrısı tarafından döndürülen POSITION değerine başvuru.

İade Değeri

Listeye bir işaretçi const CTypedPtrListGetNext aracılığıyla erişilirse, type şablon parametresi tarafından belirtilen türde bir işaretçi döndürür. Bu, işlevin yalnızca atama deyiminin sağ tarafında kullanılmasını sağlar ve böylece listeyi değişiklikten korur.

Listeye doğrudan veya bir işaretçi CTypedPtrListaracılığıyla erişiliyorsa, GetNext şablon parametresi TYPE tarafından belirtilen türde bir işaretçiye başvuru döndürür. Bu, işlevin atama deyiminin her iki tarafında kullanılmasını sağlar ve böylece liste girdilerinin değiştirilmesine izin verir.

Açıklamalar

veya CPtrList::Find çağrısıyla GetHeadPosition ilk konumu belirlerseniz, iletme yineleme döngüsünde kullanabilirsinizGetNext.

POSITION değerinizin listedeki geçerli bir konumu temsildiğinden emin olmanız gerekir. Geçersizse, Microsoft Foundation Sınıf Kitaplığı'nın Hata Ayıklama sürümü onaylar.

Alınan öğe listenin son öğesiyse, yeni rPosition değeri NULL olarak ayarlanır.

Yineleme sırasında bir öğeyi kaldırmak mümkündür. CObList::RemoveAt örneğine bakın.

CTypedPtrList::GetPrev

rPosition tarafından tanımlanan liste öğesini alır, ardından rPosition değerini listedeki önceki girdinin POSITION değerine ayarlar.

TYPE& GetPrev(POSITION& rPosition);
TYPE GetPrev(POSITION& rPosition) const;

Parametreler

TÜRÜ
Bu listede yer alan öğelerin türünü belirten şablon parametresi.

Rposition
Önceki GetPrev veya başka bir üye işlev çağrısı tarafından döndürülen POSITION değerine başvuru.

İade Değeri

Listeye bir işaretçi const CTypedPtrListGetPrev aracılığıyla erişilirse, type şablon parametresi tarafından belirtilen türde bir işaretçi döndürür. Bu, işlevin yalnızca atama deyiminin sağ tarafında kullanılmasını sağlar ve böylece listeyi değişiklikten korur.

Listeye doğrudan veya bir işaretçi CTypedPtrListaracılığıyla erişiliyorsa, GetPrev şablon parametresi TYPE tarafından belirtilen türde bir işaretçiye başvuru döndürür. Bu, işlevin atama deyiminin her iki tarafında kullanılmasını sağlar ve böylece liste girdilerinin değiştirilmesine izin verir.

Açıklamalar

veya Findçağrısıyla GetTailPosition ilk konumu belirlerseniz ters yineleme döngüsünde kullanabilirsinizGetPrev.

POSITION değerinizin listedeki geçerli bir konumu temsildiğinden emin olmanız gerekir. Geçersizse, Microsoft Foundation Sınıf Kitaplığı'nın Hata Ayıklama sürümü onaylar.

Alınan öğe listedeki ilk öğeyse, yeni rPosition değeri NULL olarak ayarlanır.

CTypedPtrList::GetTail

Bu listenin baş öğesini temsil eden işaretçiyi alır.

TYPE& GetTail();
TYPE GetTail() const;

Parametreler

TÜRÜ
Listede depolanan öğelerin türünü belirten şablon parametresi.

İade Değeri

Listeye bir işaretçi const CTypedPtrListGetTail aracılığıyla erişilirse, type şablon parametresi tarafından belirtilen türde bir işaretçi döndürür. Bu, işlevin yalnızca atama deyiminin sağ tarafında kullanılmasını sağlar ve böylece listeyi değişiklikten korur.

Listeye doğrudan veya bir işaretçi CTypedPtrListaracılığıyla erişiliyorsa, GetTail şablon parametresi TYPE tarafından belirtilen türde bir işaretçiye başvuru döndürür. Bu, işlevin atama deyiminin her iki tarafında kullanılmasını sağlar ve böylece liste girdilerinin değiştirilmesine izin verir.

Açıklamalar

çağrısından GetTailönce listenin boş olmadığından emin olmanız gerekir. Liste boşsa, Microsoft Foundation Sınıf Kitaplığı'nın Hata Ayıklama sürümü onaylar. Listenin öğeler içerdiğini doğrulamak için IsEmpty kullanın.

CTypedPtrList::RemoveHead

öğesini listenin başından kaldırır ve döndürür.

TYPE RemoveHead();

Parametreler

TÜRÜ
Listede depolanan öğelerin türünü belirten şablon parametresi.

İade Değeri

İşaretçi daha önce listenin başındadır. Bu işaretçi, şablon parametresi TYPE tarafından belirtilen türdedir.

Açıklamalar

çağrısından RemoveHeadönce listenin boş olmadığından emin olmanız gerekir. Liste boşsa, Microsoft Foundation Sınıf Kitaplığı'nın Hata Ayıklama sürümü onaylar. Listenin öğeler içerdiğini doğrulamak için IsEmpty kullanın.

CTypedPtrList::RemoveTail

öğesini listenin kuyruğundan kaldırır ve döndürür.

TYPE RemoveTail();

Parametreler

TÜRÜ
Listede depolanan öğelerin türünü belirten şablon parametresi.

İade Değeri

İşaretçi daha önce listenin kuyruğundadır. Bu işaretçi, şablon parametresi TYPE tarafından belirtilen türdedir.

Açıklamalar

çağrısından RemoveTailönce listenin boş olmadığından emin olmanız gerekir. Liste boşsa, Microsoft Foundation Sınıf Kitaplığı'nın Hata Ayıklama sürümü onaylar. Listenin öğeler içerdiğini doğrulamak için IsEmpty kullanın.

CTypedPtrList::SetAt

Bu üye işlevi ::SetAt öğesini çağırır.BASE_CLASS

void SetAt(POSITION pos, TYPE newElement);

Parametreler

Pos
Ayarlanacak öğenin POSITION.

TÜRÜ
Temel sınıf listesinde depolanan öğelerin türü.

newElement
Listeye yazılacak nesne işaretçisi.

Açıklamalar

POSITION türünde bir değişken, listenin anahtarıdır. Dizinle aynı değildir ve POSITION değerini kendiniz çalıştıramazsınız. SetAt nesne işaretçisini listede belirtilen konuma yazar.

POSITION değerinizin listedeki geçerli bir konumu temsildiğinden emin olmanız gerekir. Geçersizse, Microsoft Foundation Sınıf Kitaplığı'nın Hata Ayıklama sürümü onaylar.

Daha ayrıntılı açıklamalar için bkz . CObList::SetAt.

Ayrıca bkz.

MFC Örneği COLLECT
Hiyerarşi Grafiği
CPtrList Sınıfı
CObList Sınıfı