【发布时间】:2018-02-09 07:51:57
【问题描述】:
我的模板类声明中有以下声明:
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
在这个实例中定义静态成员的正确方法是什么?
【问题讨论】:
-
假设模板代码的其余部分是内联的,另一种选择是使用静态单例函数来声明和定义静态成员。它带有(通常)无锁“第一次”检查和内联函数调用的成本,但避免了那个讨厌的定义文件。