![]() |
1
106
模板类和函数在使用之前不会被实例化,通常在单独的.cpp文件中(例如程序源代码)。使用模板时,编译器需要该函数的完整代码,以便能够构建具有适当类型的正确函数。但是,在这种情况下,该函数的代码在模板的源文件中详细说明,因此不可用。 由于所有这些,编译器只是假设它在其他地方定义,并且只插入对模板化函数的调用。当编译模板的源文件时,程序源代码中使用的特定模板类型在那里没有使用,因此它仍然不会生成函数所需的代码。这会导致未解析的外部符号。 可用于此的解决方案是:
1和2基本上都解决了这个问题,当编译器试图在程序源代码中构建类型化函数时,它可以访问模板化函数的完整代码。 |
![]() |
2
12
另一种选择是将代码放入cpp文件,并在同一cpp文件中使用您期望使用的类型添加模板的显式实例化。如果你知道你只会把它用于你预先知道的几种类型,这很有用。 |
![]() |
3
-2
对于包含.h文件的每个文件,您应该插入两行:
样品
另外,不要忘记将声明类放在centinel常量中
|
![]() |
sungjun cho · 函数模板重叠多个匹配项 8 月前 |
![]() |
Amaterastis · 基类接受子类和内部子类的模板参数 8 月前 |
![]() |
111111 · 确定作为模板参数传递的函数的参数类型 8 月前 |
![]() |
Sam · 在LaTeX中将图像添加到预制的投影仪中 8 月前 |
![]() |
user416983 · 模板函数成员作为模板参数 9 月前 |
![]() |
PyOPTProblem · c++如何模板化模板参数的部分实例化? 9 月前 |