【发布时间】:2020-06-13 11:35:51
【问题描述】:
我希望在 C++11 中编写一个泛型类(例如:template <Class T>),但有人告诉我实现只能写在 .h 文件中。
另一方面,我应该提交一些.cpp 文件。有人可以解释一下矛盾吗?
如果所有定义和实现都需要在 .h 文件中,为什么我需要 .cpp?
【问题讨论】:
-
A
template在实例化之前没有定义或实现。它更像是一种 C++ 语言的宏。 (或代码生成器。)您可以将成为定义一次实例化的部分拆分为.cpp文件,但必须在该翻译单元中显式实例化它才能链接到其他翻译隐式实例化模板的单元。否则,模板的那些部分不会被实例化,链接器也不会找到它们。这样做很麻烦。
标签: c++ class generics typedef