所以我为 AVL 树编写了代码,它工作正常。现在我编写了另一个程序,比如 Index.cpp,它将有一个 AVL 树私有成员并执行一些功能。对于 Index 构造函数,我需要初始化 AVL 树的根,但是我不明白该怎么做。
另外,我在 Index.hpp 文件中声明了 AVL 树。当我创建一个 Index 对象时,会调用 Index 的构造函数,但不会调用 AVL。所以基本上没有创建 AVL 对象。有没有人有任何建议为什么?
AVL.hpp 文件:
struct node{
T key;
S value;
node *left;
node *right;
int height;
node (T key, S value){
this->key = key;
this->value = value;
left = NULL;
right = NULL;
height = 1;
}
};
template <class T, class S>
class AVL {
node<T,S> *root;
public:
AVL();
AVL(T k, S s);
~AVL();
void setRoot(node<T,S> *p);
......
..... //some other functions as well
}
对于 Index.hpp 文件:
class Index {
private:
AVL<string,LinkedList<int>> *wordsTree;
public:
Index(); // creates an empty Index object
~Index();
..... //other functions
}
现在我需要为 Index() 构造函数(在 .cpp 文件中)编写代码,以便初始化 wordsTree 的根。但是(我认为)在这里使用参数化构造函数是不可能的,并且 setRoot() 函数会产生分段错误。