将带有模板的构造函数实现与头文件分开
separating constructor implementation with template from header file
可能的重复项:
为什么模板类的实现和声明应该在同一个头文件中?
我的头文件有
template <typename T>
class AA : public BB<T>
{
public:
AA()
{ ... }
这工作正常。但是我需要将构造函数实现与头文件分开。
所以在 cpp 中,我有
template <typename T>
AA<T>::AA()
{ ... }
当我编译它时,它编译了,但我得到未解决的外部符号错误。我在这里错过了什么?
您可以使用以下命令在实现文件中显式实例化模板:
template class AA<int>;
这将从模板生成定义,但仅当您知道类客户端将使用哪些类型时,它才有用
如果你把一个模板实现放到一个.cpp文件中,你需要确保它被实例化:编译器不会自动为你做。大约一天前回答了大致相同的问题:模板是否总是必须在标题中?
相关文章:
- 在实现文件中使用头文件的通用 lambda
- 在文件上实现迭代器
- C++头文件和类实现出现问题
- 在文件夹迭代上实现 RAII
- 如何使用命令提示符、记事本和 MinGW 使用主文件、头文件和实现文件编译C++程序?
- 用于 Windows 写入临时文件的 mkstemp() 实现
- 类中的数组变量C++导致"was not declared in this scope"实现文件的一个函数中错误,但在构造函数中不会导致错误
- Linux 源代码中普通磁盘文件的"轮询"功能在哪里实现?
- 在 *.cpp 文件中实现的 c++ 函数/方法永远不会内联扩展吗?
- 在实现文件中使用模板参数声明方法
- 在头文件中使用opencv类型来实现未定义的标识符
- 模板实现文件中的匿名命名空间
- 创建单独的实现文件和头文件
- 多文件类实现Cpp
- Reader类实现中的文件读取错误
- MEX文件实现特征库伪内函数崩溃
- openssl rc4 命令行加密和 cpp 文件实现 rc4 之间的区别
- 从其他头文件实现结构
- c++头文件-实现-头文件-实现依赖链
- 内存映射文件实现