如何在test.h中创建模板函数在test.cpp中使用静态方法

时间:2013-06-25 04:44:31

标签: c++ templates static

目前,模板函数位于.cpp文件中,但是需要在标题中定义这些模板。但是,当我将它们移动到标头时,模板无法访问.cpp文件中的静态方法。我需要做哪些改变?

这只是一个实用程序头和cpp,与类无关。

2 个答案:

答案 0 :(得分:2)

我将继续并在头文件中声明所有需要的函数(并从其定义中删除static)。如果你将它们放在namespace FunctionName_impl_detail或类似的东西中,你就可以避免名字冲突。如果你在声明附近放置评论而不鼓励直接使用它们,你可能不需要“隐藏”或“保护”它们。但是,如果您希望阻止其他代码使用它们,则可以使privatestatic某些类的成员friend成为模板函数。

答案 1 :(得分:0)

您应该在标题中定义静态方法。

模板类必须完全在头文件中定义,因为编译器基本上为每个模板实例化创建一个新类,因此它必须在编译时访问完整的方法实现。