【发布时间】:2019-06-26 18:05:42
【问题描述】:
我正在尝试创建一个继承自 Tree 类的二叉搜索树类,但编译器说 Tree 类的数据成员没有在 BST 类中继承。
树.h
template <class T>
class Tree {
protected:
class Node {
public:
T value;
Node * left;
Node * right;
};
Node * root;
public:
Tree() : root(NULL) { }
};
BST.h
template <class T>
class SearchTree : public Tree<T> {
public:
void foo();
};
template <class T>
void SearchTree<T>::foo() {
Node * node = NULL; //error- Unknown type name 'Node'
root = node; //error- Use of undeclared identifier 'root'
}
我希望能够从基类“树”访问节点和根。为什么编译器会说它们未声明且未知?
【问题讨论】:
-
使用
Tree<T>::Node代替Node。您需要明确继承的嵌套类。
标签: c++ inheritance inner-classes