<分区>
Possible Duplicate:
Why can templates only be implemented in the header file??
你好,
我有一个由几个头文件和源文件组成的 C++ 项目。为了使用模板修改类,我发现所有方法定义都必须包含在头文件本身中,否则会导致链接时错误。这是什么原因,我该如何克服这个问题??
谢谢!!
<分区>
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/