模板类链接时错误

时间:2010-05-18 10:54:34

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

  

可能重复:
  Why can templates only be implemented in the header file??

您好,

我有一个c ++项目,它包含几个头文件和源文件。为了使用模板修改类,我发现所有方法定义必须包含在头文件本身中,否则会导致链接时错误。这是什么原因,我怎么能克服这个?

谢谢!!

1 个答案:

答案 0 :(得分:1)

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

在你的旅行中,你会发现提到导出关键字,这应该解决这个问题。简而言之,它没有,没有人实现它(除了一个非常勇敢的编译器供应商),它将很快不再是C ++的一部分。