CTypedPtrList选件类

为选件类提供类型安全的“包装” CPtrList对象。

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

参数

  • BASE_CLASS
    类型化指针的基类列表选件类;必须是指向列表选件类(CObListCPtrList)。

  • TYPE
    在基类存储元素的类型的列表。

成员

850101a7.collapse_all(zh-cn,VS.110).gif公共方法

名称

说明

CTypedPtrList::AddHead

添加一个元素(或在其他元素中的所有元素列表)添加到列表的开头(用于新头)。

CTypedPtrList::AddTail

添加一个元素(或在其他元素中的所有元素列表)添加到列表尾(提交新的尾)。

CTypedPtrList::GetAt

获取元素在特定位置。

CTypedPtrList::GetHead

返回列表的head元素(不能为空)。

CTypedPtrList::GetNext

获取重复的下一个元素。

CTypedPtrList::GetPrev

获取重复上一个元素。

CTypedPtrList::GetTail

返回列表尾元素(不能为空)。

CTypedPtrList::RemoveHead

从列表的开头移除元素。

CTypedPtrList::RemoveTail

从列表尾移除元素。

CTypedPtrList::SetAt

将该元素在特定位置。

备注

当您使用 CTypedPtrList 而不是 CObListCPtrList时,类型检查计算机帮助的C++消除不匹配的指针类型引起的错误。

此外,CTypedPtrList 包装执行所需的大部分强制转换是否使用了 CObListCPtrList

由于所有 CTypedPtrList 函数内联,该模板的使用不显着影响您的代码的大小或速度。

列出从 CObList 派生的可序列化,但是,从 CPtrList 派生的那些不可以。

CTypedPtrList 对象被删除,或者,如果移除元素,因此,只有这些引用移除的指针,而不是实体。

有关使用 CTypedPtrList的更多信息,请参见位于 集合基于模板的选件类

示例

此示例创建 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

请参见

参考

层次结构图

CPtrList选件类

CObList选件类

概念

MFC示例集合