当我使用模板在一个类的源代码文件(CPP)和头文件(H)之间分割代码,并且在链接最终执行文件时,尽管对象文件已经正确构建并包含在链接中,但我会遇到大量“未解析的外部符号”错误。这是怎么回事,我该如何解决?
.cpp
文件的用途是什么? @JohannesSchaub-litb - user786basic_string<T>
这样的东西,你只会使用 char
或 wchar_t
,因此如果将所有实现放在头文件中成为问题,那么在 cpp 中实例化它是一个选择。代码应该服从于你的命令,而不是相反的。 - shoosh#include "MyfileWithTemplatesDeclaration.h"
#include "MyfileWithTemplatesDefinition.cpp"
示例
#include "list.h"
#include "list.cpp" //<---for to fix bug link err 2019
int main(int argc, _TCHAR* argv[])
{
list<int> my_list;
my_list.add_end(3);
.
.
}
另外,不要忘记将你的声明类放置在 centinel 常量之中
#ifndef LIST_H
#define LIST_H
#include <iostream>
.
.
template <class T>
class list
{
private:
int m_size,
m_count_nodes;
T m_line;
node<T> *m_head;
public:
list(void);
~list(void);
void add_end(T);
void print();
};
#endif