为什么“未定义对模板类构造函数的引用”?
模板类定义了用于创建不同类型的类的蓝图。要使用模板类,您需要使用特定类型实例化它。在您的例子中,您有两个模板类:nodo_colaypila 和 cola。
但是,编译器在编译代码之前需要了解实例化类的构造函数。由于您没有显式实例化具有特定类型的模板类,因此编译器不知道要包含哪些构造函数。
两种解决方案:
有两种方法解决此问题:
解决方案 1:显式模板实例化
在 cola.cpp 末尾添加显式模板实例化:
template class cola<float>; template class cola<string>;
确保所有模板定义都在一个翻译单元(.cpp 文件)中并且显式实例化位于文件末尾。
解决方案 2:将代码移至标头文件
将实现成员函数的代码从 cola.cpp 和 nodo_colaypila.cpp 移动到相应的头文件 .h 中。这样做使函数实现可用于包含这些标头的所有翻译单元。
摘要:
显式模板实例化方法允许您控制特定类型的实例化。 “将代码移动到头文件”方法很常用,并使所有翻译单元都可以实现。选择取决于您的具体需求和项目要求。
以上是为什么我收到'模板类构造函数的未定义引用”以及如何修复它?的详细内容。更多信息请关注PHP中文网其他相关文章!