问题:
在C++中,用模板的方法实现链表时,有一个很棘手的问题,就是模板的声明和定义必须得放在一起,分开实现就会无法链接,在vs2019中并出现如下错误:
fatal error LNK1120: 1 个无法解析的外部命令
解决方法:
为了解决这一问题,查阅了一些资料和源码,终于得到了解决方法,具体步骤就是:
在头文件中实现函数声明
-
将每个函数的声明实现放在一个.h的文件中,具体的解决方案目录结构如下:
-
定义一个新的头文件(如
list_implemention.h
),将所有函数实现的头文件包含进去,如下图所示:
-
在函数声明的头文件末尾,包含这个头文件
定义一个头文件(如 list_test.h)包含整个项目的基本头文件,如(iostrean,list.h)
- 最后,只要在测试驱动的cpp文件中(如main.cpp)中包含以上
list_test.h
文件就可以了。