CTypedPtrList 類別
為類別提供型別安全的「包裝函式」 CPtrList物件。
template< class BASE_CLASS, class TYPE >
class CTypedPtrList : public BASE_CLASS
參數
BASE_CLASS
具型別指標清單類別的基底類別,必須是指標清單類別 (CObList 或 CPtrList)。TYPE
在類別清單中的項目型別。
成員
公用方法
名稱 |
描述 |
---|---|
將項目 (或另一個檔案中的所有項目清單) 加入至清單的開頭 (設定新的開頭)。 |
|
將項目 (或另一個檔案中的所有項目清單) 加入至清單的尾端 (設定一個新的尾端)。 |
|
取得這個項目在指定的位置。 |
|
傳回清單的標頭項目 (不可以是 Null)。 |
|
取得可逐一查看的下一個項目。 |
|
取得可逐一查看的上一個項目。 |
|
傳回清單的尾端項目 (不可以是 Null)。 |
|
從清單中移除的項目。 |
|
從清單的尾端移除項目。 |
|
設定這個項目在指定的位置。 |
備註
當您使用 CTypedPtrList 而不是 CObList 或 CPtrList時, C++ 型別檢查的安裝有助於排除不相符的指標型別所造成的錯誤。
此外, CTypedPtrList 包裝函式執行所需的大部分轉型您是否已經使用 CObList 或 CPtrList。
由於所有 CTypedPtrList 函式內嵌,此範本就不會明顯影響您程式碼的大小或速度。
從 CObList 衍生清單中還原序列化,但是,從 CPtrList 衍生的那些不行。
當 CTypedPtrList 刪除物件,或,在移除其元素,,才會移除參考的指標,而不是實體。
如需使用 CTypedPtrList的相關資訊,請參閱 Microsoft 知識庫文件 集合 和 樣板類別。
範例
這個範例會建立 CTypedPtrList執行個體,將物件序列化,清單儲存至磁碟,然後刪除物件:
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;
}
繼承階層架構
BASE_CLASS
_CTypedPtrList
CTypedPtrList
需求
Header: afxtempl.h