2012-05-06 31 views
0

可能重复:
Why can templates only be implemented in the header file?
Why should the implementation and the declaration of a template class be in the same header file?模板和分裂成的.h/.cpp文件

我要创建一对夫妇的ADT,并比较它们的性能(我参加一个数据结构课程并想进行实验;注意:我们的教师使用Java)。我想创建泛型类,这样我就不会陷入特定的数据类型。我很久以前就读过,不可能分解模板类。保持代码清洁的最佳方法是什么?最明显的方法是在不隐藏实现的情况下简单使用.cpp文件,例如在java中。有没有其他方法可以使用?

+0

简短的答案是将它全部留在标题中。稍微长一点的版本是为了确保它在编译时结束于头部。 (换句话说,如果你有多个文件,头文件必须包含它们。) – Corbin

+0

你试图避免在头文件中定义你的方法吗? –

+0

使用C++ 11 extern模板或将其保留在标题中。 – chris

回答

5

有些人使用标题中包含的“ipp”文件。

除此之外......它就是这样。您不能将模板代码放在编译的文件中,并且可以在其外部使用它。

+1

.inl(for inline)也是直接包含在.h文件中的文件的常见扩展名,但并不意味着被其他.h/.cpps包含。 –

+1

.hpp也很常见 –

+0

我只看到.hpp的C++头文件。所有的boost都是这样完成的,但有时候它们会使用.ipp来实现。 –