c++ - 模板类链接时错误

标签 c++ visual-c++ templates methods header-files

<分区>

Possible Duplicate:
Why can templates only be implemented in the header file??

你好,

我有一个由几个头文件和源文件组成的 C++ 项目。为了使用模板修改类,我发现所有方法定义都必须包含在头文件本身中,否则会导致链接时错误。这是什么原因,我该如何克服这个问题??

谢谢!!

最佳答案

这是故意的。模板放在头文件中,故事结束。没有其他办法了。为了让编译器实例化模板,它必须能够看到它,这意味着它必须在头文件中。模板不像 C# 泛型,在 C# 泛型中,模型允许它们被隐藏并基本上由链接器实例化 - 模板比这复杂得多,因此它们必须存在于头文件中。

在您的旅行中,您会发现提到了 export 关键字,它应该可以解决这个问题。长话短说,它没有,没有人实现它(除了一个非常勇敢的编译器供应商)并且它很快将不再是 C++ 的一部分。

关于c++ - 模板类链接时错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2856516/

相关文章:

c++ - 指向数据类型的指针的类模板推导

c++ - 在 C++ 中返回更大值的模板函数

c++ - 看起来几乎相同但使用一些不同数据和函数的多个类

c++ - remove_if 字符串中的最后一个字符

c++ - 在成员初始化列表中填充 std::array

c++ - QT造物主: Program crashes in debug mode but working in Release mode and in DEBUG Mode with breakpoints for QThread based program

c++ - 在 xcode 中链接 boost 库

visual-c++ - 您如何使用OpenCV进行2d傅立叶变换?

c++ - 返回类型模板(enable_if)禁止什么?

c++ - 如何在 MSVC++ 2005 或 2008 的大型解决方案中找到重复的 header ?