在分文件编译时对于模板编程遇到的一些问题:显示"underfined reference to …"。
.
├── CMakeLists.txt
├── README.md
├── build
├── include
│ ├── node.h
│ └── skip_list.h
├── main.cpp
└── src
├── node.cpp
└── skip_list.cpp
3 directories, 7 files
我检查了好久,且问了chatgpt未找到解决措施。
但是随着不断的排除,最终将问题定位到头文件和源文件没有链接上。我突然想到最早学C++模板编程时,他们是建议用.hpp
来定义和实现的,但是现在我是分文件编程可能有问题。之后我又在网上搜索,找到了两个解决方法。
#include <iostream>
#include "node.h"
将node.h
换为node.cpp
,即可。
#include <iostream>
#include "node.cpp"
这是因为在.cpp
文件内含有.h
文件,就相当去编译器知道了头文件和源文件。
.hpp
文件内.
├── CMakeLists.txt
├── README.md
├── include
│ ├── node.hpp
│ └── skip_list.hpp
├── introduction(原版)
│ └── 模板采用分文件编程错误x
│ ├── CMakeLists.txt
│ ├── README.md
│ ├── build
│ ├── include
│ │ ├── node.h
│ │ └── skip_list.h
│ ├── main.cpp
│ └── src
│ ├── node.cpp
│ └── skip_list.cpp
└── main.cpp
6 directories, 12 files