【发布时间】:2014-12-15 00:59:11
【问题描述】:
我正在尝试创建一个简单的模板二叉搜索树进行练习,我目前在头文件中有如下内容:
template <class T_Satellite, class T_Key>
class bst {
struct bst_node;
static const bst_node* nullnode;
}
我的问题目前源于试图在 cpp 文件中定义 nullnode。我试过了:
template <class T_Satellite, class T_Key>
const bst<T_Satellite, T_Key>::bst_node * bst::nullnode = bst_node(nullptr, nullptr);
和
template <class T_Satellite, class T_Key>
const bst<T_Satellite, T_Key>::bst_node * bst::nullnode(nullptr, nullptr);
但似乎两者都不起作用。我的 cpp 文件中也有 bst_node 的定义。编译器吐出
'std::bst<T_Satellite,T_Key>::nullnode' : static data member cannot be initialized via derived class'
在第一个例子中以及
'std::bst<T_Satellite,T_Key>::bst_node' : dependent name is not a type.
有什么想法吗?
【问题讨论】:
标签: templates c++11 inner-classes static-members