一个简单的链表模版类的实现,一个简单的链表模版类的实现
【 tulaoshi.com - C语言心得技巧 】
一个简单的链表模版类的实现
作者:Smoke
源代码下载
这是翻阅《数据结构、算法与应用——C++语言描述》以及在网上得到的一些资料后写出来的。起因是在项目中要用到一个链表,但我做一个简单的链表在C++中用的时候跟C差别很多,比如赋值运算(编译器说要做操作符重载,或者考贝构造函数,C++中把结构当成一个类来看了,详见相关介绍的文档或书籍)。后来一想干脆做个template顺便学习一下,一举两得。
几个问题:
CListData和CNode的函数均为内联函数(inline),因为目前的编译器仍不支持分离编译。按《Thinking in C++》一书第16章中的解释是,模版类在定义的时候并没有对内存进行分配置,而是到实例化的情况下才分配内存,因此可以把声明和定义都写在头文件(详见原文)。
因此,如果将两个文件分离则在连接时报错LNK2001。(这问题把我搞得痛苦了好一阵)
在网上及书上的例程中通常是以一个int做为例子,这使得在我们应用的时候很不方便,特别是在不完全理解template的时候。在这里我以一个类(CNodeInfo)作一个节点类型的例子。
代码:
class CNodeInfo{private:intm_Count;//Counter or call it PKEY:)CStringm_strFileName;//for Store filenameDWORDm_dwFileLen;//for store file lengthBOOLm_bStatus;//Transfers status tag;public: CNodeInfo();~CNodeInfo();void SetStatus(BOOL bStatus = FALSE);BOOL GetStatus();void SetFileLen(DWORD len);DWORD GetFileLen();void SetFileName(CString str);CString GetFileName();};//private 为数大家可以理解成结构中的元素如:typedef struct _FILESTRUCT_{int count;CString strFileName;DWORD dwFIleLenBOOLbStatus;}FILESTRUCTURE.
来源:http://www.tulaoshi.com/n/20160129/1485958.html
看过《一个简单的链表模版类的实现》的人还看了以下文章 更多>>