在哪里定义模板类的静态常量成员变量

Where to define static const member variables of a template class

本文关键字:静态 常量 成员 变量 定义 在哪里      更新时间:2023-10-16

根据这个问题的答案:

According to the standards you must define i(它是一个静态常量成员)outside of the class definition

但是,如果我对模板类的静态const成员变量这样做,它们本身就是泛型的,那么我就会得到链接错误(类似于如果模板代码在单独的编译单元中,则会得到链接错误)。如果我在标题中定义它们,链接错误就会消失(在这个问题中,我首先问以generic的方式定义它们是否可以)。

我正在做的事情安全吗下面是标头中静态常量成员变量的定义之一。

  template<typename T, unsigned int T_Size> 
  const Vector<T, T_Size> Vector<T, T_Size>::Zero = Vector<T, T_Size>(0);
类模板的静态数据成员必须在头文件中定义。只有在定义显式专用模板的静态成员时,才必须在实现文件中定义它们。

换句话说,该规则与类模板的成员函数相同。

由于每个翻译单元都需要完整的模板定义,是的,这就是方法。