如何定义模板类的静态成员?

时间:2018-02-09 07:51:58

标签: templates static c++14

我的模板类声明中有以下声明:

template<typename T1>
class node{

public:
static const shared_ptr<node<T1>> null_sp2node;

};

我不确定如何定义这个静态const成员?

我试过

template<typename T1> static const shared_ptr<node<T1>>
node<T1>::null_sp2node = NULL;

但是得到以下编译器错误:

error: 'static' can only be specified inside the class definition

在这个实例中定义静态成员的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

正如错误消息所述,当定义(而不是声明static成员{{时,请删除static关键字1}}:

null_sp2node

关键字template<typename T1> const shared_ptr<node<T1>> node<T1>::null_sp2node = NULL; 只应在在类定义中声明 static成员时使用(就像在static类模板的定义中那样) ,定义成员时(即:为其创建存储空间)。