CTypedPtrList选件类
为选件类提供类型安全的“包装” CPtrList对象。
template< class BASE_CLASS, class TYPE >
class CTypedPtrList : public BASE_CLASS
参数
BASE_CLASS
类型化指针的基类列表选件类;必须是指向列表选件类(CObList 或 CPtrList)。TYPE
在基类存储元素的类型的列表。
成员
公共方法
名称 |
说明 |
---|---|
添加一个元素(或在其他元素中的所有元素列表)添加到列表的开头(用于新头)。 |
|
添加一个元素(或在其他元素中的所有元素列表)添加到列表尾(提交新的尾)。 |
|
获取元素在特定位置。 |
|
返回列表的head元素(不能为空)。 |
|
获取重复的下一个元素。 |
|
获取重复上一个元素。 |
|
返回列表尾元素(不能为空)。 |
|
从列表的开头移除元素。 |
|
从列表尾移除元素。 |
|
将该元素在特定位置。 |
备注
当您使用 CTypedPtrList 而不是 CObList 或 CPtrList时,类型检查计算机帮助的C++消除不匹配的指针类型引起的错误。
此外,CTypedPtrList 包装执行所需的大部分强制转换是否使用了 CObList 或 CPtrList。
由于所有 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