완전한 이진 검색 트리를 만드는 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 일 수 있습니다. 어떻게 해결할 수 있습니까? –