【发布时间】:2011-04-14 12:40:13
【问题描述】:
为什么模板类的实现和声明应该在同一个头文件中?谁能举例说明一下?
【问题讨论】:
-
它们必须在同一个编译单元中可见。如果两者都包含,它们可以在不同的文件中
-
实际上在两个文件中拆分声明和实现并不少见。标头通常包含实现文件。
-
@MSalters:模板类有问题,这就是这个问题的意义所在。我希望我能对 cmets 投反对票。
-
@Tomalak Geret'kal:一点也不。您在“Foo.h”中有一个声明,在“Foo.impl”中有定义。标头保护之前的“foo.h”的最后一行是“#include”Foo.impl。预处理器运行后,就没有区别了。它们可能在不同的文件中,但它们在同一个翻译单元中结束(s) - 这对编译器很重要。
-
@MSalters:好的,好的。实际上,我设法完全倒着读了你的最后一句话。 :)