1. 使用typedef的链表定义方式
typedef CTypedPtrList <CObList, CPSProp *> CPSList
- 这是一个typedef的重命名,用
CPSList
代替CTypedPtrList <CObList, CPSProp *>
。 - CTypedPtrList 是MFC的一个模板类,
CObList
和CPSProp
是它的两个输入参数类型。
真正使用链表的时候都是这么使用的,而不是那种直接定义一个CObList的链表。CTypedPtrList类是个模板类,一般在软件开发中用到的时候比较多,它的作用就是类似一个链表,下面是这个类的原型
template < class BASE_CLASS, class TYPE> class CTypedPtrList : public BASE_CLASS
(1)第一个参数是链表的基类,这里必须是个指针列表类(如Coblist、CPtrlist,只要是指针列表类),比如CTypedPtrList <CObList, CPSProp *>
,实际上这个链表类CTypedPtrList是继承自CObList的;
(2)第二个参数指在链表类中所存放的类型。
为什么不直接用Coblist或者CPtrlist呢?因为CTypedPtrList类又进一步的封装了它的基类,并且为消除了一些错误,还提供了一些类型的强制转化,所以说一般链表都是用CTypePtrList这个模板类。不用担心这个类封装以后会变的速度慢,因为CTypedPtrList类封装以后里面的函数是内联的,如果你想真正想掌握这个模板类还是需要看看他基类提供的成员函数。