我的模板类声明中有以下声明:
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
在这个实例中定义静态成员的正确方法是什么?
答案 0 :(得分:1)
正如错误消息所述,当定义(而不是声明)static
成员{{时,请删除static
关键字1}}:
null_sp2node
关键字template<typename T1> const shared_ptr<node<T1>>
node<T1>::null_sp2node = NULL;
只应在在类定义中声明 static
成员时使用(就像在static
类模板的定义中那样) ,定义成员时不(即:为其创建存储空间)。