मैं सी में एक द्विआधारी खोज वृक्ष ++ पर काम कर रहा हूँ। मैं gdb चल मेरे कार्यक्रम पर (मैं एक segfault प्राप्त कर रहा हूँ) के बाद सूचना निम्न त्रुटियों हो रही है:
#0 0x08049058 in searchTree::tree_node<int>::getLeft (this=0x0) at bst.hxx:75
#1 0x08048ed8 in searchTree::bst_iter<int>::operator++ (this=0xbffff4b4) at bst.hxx:586
#2 0x08048a72 in main () at projectmain.cxx:29
# 0 त्रुटि मेरी getLeft () फ़ंक्शन, जो इस प्रकार है को संदर्भित करता है:
template <typename T>
inline tree_node<T>* tree_node<T>::getLeft() const
{
return tree_node<T>::left_; //note that left_ is of type tree_node<T>*
}
# 1 त्रुटि मेरी ऑपरेटर ++ मेरी iterators में परिभाषित किया गया है, जो इस प्रकार है को संदर्भित करता है:
bst_iter<T>& operator++()
{ //note that s is a stack of tree_node<T>*
tree_node<T> *p = pos_->getRight();
s.push(p);
for(p=p->getLeft(); p!=NULL; p=p->getLeft())
{
s.push(p);
}
pos_ = s.top();
s.pop();
return *this;
}
# 2 त्रुटि, अपने मुख्य कार्यक्रम है, जहां मैं फ़ाइल कि tree_node के लिए मेरे निर्धारणों वाली शामिल कर रहा हूँ, binaryTree, bst_iter, और bst_citer (जो इस बिंदु पर मौजूद नहीं है, इसलिए नहीं एक मुद्दा)।
bst_iter<int> i = treeTime.begin(); //treeTime is our tree
bst_iter<int> iEnd = treeTime.end();
for(; i != iEnd ;++i) //crash
{
cout<<*i<< ;
}
template <typename T>
inline bst_iter<T> binaryTree<T>::begin()
{
return bst_iter<T>(root_);
}
template <typename T>
inline bst_iter<T> binaryTree<T>::end()
{
return bst_iter<T>(0);
}
मैं पूरी तरह यकीन है कि क्या त्रुटि पैदा नहीं कर रहा हूँ। मुझे विश्वास है कि ++ () एक क्षेत्र है कि परिभाषित नहीं किया गया उपयोग करने के लिए कोशिश कर रहा है, लेकिन मैं वास्तव में यकीन है कि क्यों यह है कि या कर कैसे इसे रोकने के लिए है नहीं कर रहा हूँ ... मैं कोड पर वापस पकड़ करने की कोशिश की, कोड के रूप में लगभग 800 लाइनों लंबा है, लेकिन अधिक जानकारी की आवश्यकता है, मुझे पता है ...













