私は完全なバイナリ検索ツリーを作成する3つのクラスを持っています。 3つのクラスは です。1. DBentry(名前、IPアドレス、およびステータスを格納します)、 2. TreeNode(独自のDBentryおよびその左右のエントリを指します) 3. TreeDB(ルートTreeNodeそして、私は正常に動作していないようfriend ostream& operator<< (ostream& out, const TreeDB& rhs); friend ostream& operator <<(ostream& out, TreeNode* rhs);
これらのオーバーロード演算子を持って、私はfriend ostream& operator <<(ostream& out, const DBentry& rhs);
インサイドTreeDBを持っている)バイナリ検索ツリー<<演算子オーバーロードが動作しない
内部DBentryを、追加、更新プログラムを削除し、DBentryobjectsを見つけるために、さまざまな機能を提供します。どんな助けでも本当に役に立ちます。
クラス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);
};
クラスのTreeNode:
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);
};
クラスTreeDBが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を設定できます。どうすれば修正できますか? –