目前模板函数在 .cpp 文件中,但是这些模板需要在头文件中定义。但是,当我将它们移到标题中时,模板无法访问 .cpp 文件中的静态方法。我需要进行哪些更改才能使其正常工作?
这只是一个实用程序头和 cpp,与类无关。
我会继续将所有需要的函数的声明放在头文件中(并static
从它们的定义中删除)。如果你把它们放进去namespace FunctionName_impl_detail
或类似的东西,你就不会出现名称冲突。如果您将注释放在不鼓励直接使用它们的声明附近,您可能不需要“隐藏”或“保护”它们。但是如果你想主要阻止其他代码使用它们,你可以让它们成为模板函数的某个类的成员private
。static
friend
您应该在标题中定义静态方法。
模板类必须完全在头文件中定义,因为编译器基本上为每个模板实例创建一个新类,因此它必须在编译时访问完整的方法实现。