目前,模板函数位于.cpp文件中,但是需要在标题中定义这些模板。但是,当我将它们移动到标头时,模板无法访问.cpp文件中的静态方法。我需要做哪些改变?
这只是一个实用程序头和cpp,与类无关。
答案 0 :(得分:2)
我将继续并在头文件中声明所有需要的函数(并从其定义中删除static
)。如果你将它们放在namespace FunctionName_impl_detail
或类似的东西中,你就可以避免名字冲突。如果你在声明附近放置评论而不鼓励直接使用它们,你可能不需要“隐藏”或“保护”它们。但是,如果您希望阻止其他代码使用它们,则可以使private
,static
某些类的成员friend
成为模板函数。
答案 1 :(得分:0)
您应该在标题中定义静态方法。
模板类必须完全在头文件中定义,因为编译器基本上为每个模板实例化创建一个新类,因此它必须在编译时访问完整的方法实现。