我有3个类创建了一个完整的二叉搜索树。这三个类别是 1. DBentry(存储名称,IP地址和状态), 2. TreeNode(指向它自己的DBentry以及它的左边和右边的条目) 3. TreeDB(包含根树节点并提供各种功能的添加,删除,更新,并找到DBentryobjects)二元搜索树<<运算符重载不起作用
里面DBentry我friend ostream& operator <<(ostream& out, const DBentry& rhs);
里面树形菜单我有friend ostream& operator<< (ostream& out, const TreeDB& rhs); friend ostream& operator <<(ostream& out, TreeNode* rhs);
这些运算符重载似乎并没有正常工作。任何帮助都会非常有帮助。
类DBentry:
class DBentry {
private:
string name;
unsigned int IPaddress;
bool active;
public:
DBentry();
DBentry (string _name, unsigned int _IPaddress, bool _active);
~DBentry();
void setName(string _name);
void setIPaddress(unsigned int _IPaddress);
void setActive (bool _active);
string getName() const;
unsigned int getIPaddress() const;
bool getActive() const;
friend ostream& operator <<(ostream& out, const DBentry& rhs);
};
类树节点:
class TreeNode {
private:
DBentry* entryPtr;
TreeNode* left;
TreeNode* right;
public:
TreeNode();
TreeNode(DBentry* _entryPtr);
~TreeNode();
void setLeft(TreeNode* newLeft);
void setRight(TreeNode* newRight);
TreeNode* getLeft();
TreeNode* getRight();
DBentry* getEntry() const;
bool find(string _name);
};
类树形菜单具有private: TreeNode* root;
ostream& operator <<(ostream& out, const DBentry& rhs){
out<<rhs.name<<" : "<<rhs.IPaddress<<" : ";//<<rhs.active? (out<<"active"):(out<<"inactive")<<endl;
if(rhs.active)
out<<"active";
else
out<<"inactive";
out<<endl;
}
ostream& operator <<(ostream& out, TreeNode& rhs){
if(rhs.getEntry()!=NULL){
out << *(rhs.getLeft());
out << *(rhs.getEntry());
out << *(rhs.getRight());
}
}
ostream& operator<< (ostream& out, const TreeDB& rhs){
out << *(rhs.root);
}
即使退出;它给出了分段错误。 –
@FabiaBushraTamanna如果Entry不为NULL,左或右是否可能为NULL?打印NULL将是一个简单的方法来崩溃。 – user4581301
是的,左边或右边可能是NULL。我该如何解决这个问题? –