繁体   English   中英

.cpp文件中模板类的非模板方法-未定义引用?

[英]Non-template methods of a template class in .cpp file - Undefined reference?

我知道,由于某种原因,我必须在头文件中定义模板函数。 但是,我相信非模板函数,即使它们属于模板类,也可以在.cpp文件中定义。 可以吗? 如果没有,为什么不呢? 谢谢 :)

实际上,必须在标头中/使用时定义的(除非发生其他地方的显式实例化)是“模板实体”。 到目前为止,在C ++中还没有这样的术语,但是正在提出将其添加到语言中的提议,因为许多规则不仅适用于模板,还适用于“模板实体”。

参见http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2016/p0391r0.html

原因应该很明显。 就像模板一样,模板的成员可以使用模板参数,因此它们的源必须可用于实例化。

解决此类问题的技巧(如果成员函数不使用template参数)是将函数放在非模板基类中,并从类模板继承该类。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM