CTypedPtrList Sınıfı
sınıfı CPtrList
nesneleri 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 CPtrList
yerine 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 CPtrList
kullanı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 CTypedPtrList
hakkında daha fazla bilgi için Koleksiyonlar ve Şablon Tabanlı Sınıflar makalelerine bakın.
Örnek
Bu örnek bir örneğini CTypedPtrList
oluş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 CTypedPtrList
GetAt
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 CTypedPtrList
aracı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 CTypedPtrList
GetHead
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 CTypedPtrList
aracı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 GetNext
bir , GetHeadPosition
veya 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 CTypedPtrList
GetNext
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 CTypedPtrList
aracı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 CTypedPtrList
GetPrev
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 CTypedPtrList
aracı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 CTypedPtrList
GetTail
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 CTypedPtrList
aracı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ı
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin