0

所以我为 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() 函数会产生分段错误。

4

0 回答 0