首页 > 后端开发 > C++ > 为什么我收到'模板类构造函数的未定义引用”以及如何修复它?

为什么我收到'模板类构造函数的未定义引用”以及如何修复它?

DDD
发布: 2024-12-09 19:57:15
原创
555 人浏览过

Why Do I Get

为什么“未定义对模板类构造函数的引用”?

模板类定义了用于创建不同类型的类的蓝图。要使用模板类,您需要使用特定类型实例化它。在您的例子中,您有两个模板类:nodo_colaypila 和 cola。

但是,编译器在编译代码之前需要了解实例化类的构造函数。由于您没有显式实例化具有特定类型的模板类,因此编译器不知道要包含哪些构造函数。

两种解决方案:

有两种方法解决此问题:

解决方案 1:显式模板实例化

在 cola.cpp 末尾添加显式模板实例化:

template class cola<float>;
template class cola<string>;
登录后复制

确保所有模板定义都在一个翻译单元(.cpp 文件)中并且显式实例化位于文件末尾。

解决方案 2:将代码移至标头文件

将实现成员函数的代码从 cola.cpp 和 nodo_colaypila.cpp 移动到相应的头文件 .h 中。这样做使函数实现可用于包含这些标头的所有翻译单元。

摘要:

显式模板实例化方法允许您控制特定类型的实例化。 “将代码移动到头文件”方法很常用,并使所有翻译单元都可以实现。选择取决于您的具体需求和项目要求。

以上是为什么我收到'模板类构造函数的未定义引用”以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板