Templates 如何定义模板类的静态成员?
我的模板类声明中包含以下声明:Templates 如何定义模板类的静态成员?,templates,static,c++14,Templates,Static,C++14,我的模板类声明中包含以下声明: template<typename T1> class node{ public: static const shared_ptr<node<T1>> null_sp2node; }; 在此实例中,定义静态成员的正确方法是什么?正如错误消息中所述,在定义(而不是声明)静态成员null\u sp2node时,请删除静态关键字: template<typename T1> const shared_ptr<n
template<typename T1>
class node{
public:
static const shared_ptr<node<T1>> null_sp2node;
};
在此实例中,定义静态成员的正确方法是什么?正如错误消息中所述,在定义(而不是声明)静态
成员null\u sp2node
时,请删除静态
关键字:
template<typename T1> const shared_ptr<node<T1>>
node<T1>::null_sp2node = NULL;
模板常量共享\u ptr
node::null_sp2node=null;
关键字static
仅在类定义中声明static
成员时使用(就像在节点
类模板的定义中所做的那样),但在定义成员(即:为其创建存储)时不使用。假设模板的其余代码是内联的,另一个选项是使用静态单例函数来声明和定义静态成员。它附带(通常)无锁“第一次”检查和内联函数调用的成本,但避免了讨厌的定义文件。
error: 'static' can only be specified inside the class definition
template<typename T1> const shared_ptr<node<T1>>
node<T1>::null_sp2node = NULL;