可以在用于BST的类中具有类成员变量BST吗?

时间:2018-05-01 06:31:51

标签: c++ search tree binary binary-search-tree

我有一个使用模板的二进制搜索树类。所以我可以创建一个类型为Faculty的BST,但有没有办法在Faculty类中包含BST?

我希望将一个整数树作为Faculty类中的成员变量。

所以我会有一个Faculty树,每个节点(类型为faculty)都有自己的整数树。

这是我正在尝试添加BST成员变量的Faculty类。从我在其他地方读到的问题在于尝试#include BST.h文件,因为我已将Faculty文件包含在BST文件中。

#ifndef Faculty_H
#define Faculty_H

#include "Person.h"
#include "BST.h"


using namespace std;

class Faculty : public Person
{

public:


Faculty();
Faculty(int new_ID);
~Faculty();


friend ostream& operator<<(ostream& os, Faculty& f);



private:


BST<int> advisees;

};






#endif //Faculty_H

这是我的错误: ./Faculty.h:36:2:错误:未知类型名称&#39; BST&#39;         BST顾问;

AND HERE&#39; BST.H

#ifndef BST_H
#define BST_H

#include <iostream>
#include <fstream>
#include <cmath>
#include <cstdlib>

#include "tree_node.h"
#include "tree_node.cpp"

#include "Person.h"
#include "Student.h"
#include "Faculty.h"

using namespace std;




template <class T>
class BST
{

public:

BST();
~BST();


void insert(T k);
tree_node<T>* find(T k);
bool contains(T k);
bool delete_node(T k);

tree_node<T> *get_min();
tree_node<T> *get_max();

tree_node<T> *get_root();

bool is_empty();
int get_size();
void print_tree(tree_node<T> *node);

tree_node<T>* get_successor(tree_node<T> *d);




private:

tree_node<T> *root;
unsigned int size;
};



#endif //BST_H

1 个答案:

答案 0 :(得分:0)

你有一个#include循环; BST.h包括Faculty.h,其中包含BST.h。这可能会导致很多问题,包括你现在看到的问题;根据包含顺序,当教师需要使用它时,BST的定义可能不可用。

BST.h并不需要了解有关人员,学生或教师的任何信息。删除这些包含应解决当前问题。