में अप्रत्याशित सूचक व्यवहार मुझे सी ++ में मेरे पॉइंटर्स के साथ कोई समस्या हो रही है, और यह बहुत अच्छा होगा अगर कोई मेरी विशेषज्ञता को मेरे साथ साझा करने में सक्षम था!सी ++
उत्पादन मैं हो रही है:
1:
2:
END: C
1:C
2:E
END: E
उत्पादन मैं उम्मीद कर रहा था है:
मेरी test.cpp
:1:
2:
END: C
1:C
2:C
END: E
प्रासंगिकता के कोड यह है
tree.insert('C');
tree.insert('E');
कीड़े आरटी समारोह:
template <typename T> pair<typename btree<T>::iterator, bool> btree<T>::insert(const T& elem) {
cout << "1:" << this->rbegin_->value() << endl;
btree_node<T> node(elem);
cout << "2:" << this->rbegin_->value() << endl;
rbegin_ = &node;
iterator itr;
pair<typename btree<T>::iterator, bool> p(itr, false);
cout << "END: " << this->rbegin_->value() << endl;
return p;
}
btree_node के लिए निर्माता (जो मूल रूप से खाली है):
template <typename T> btree_node<T>::btree_node(const T& elem) : value_(elem), nextCont_(NULL), prevCont_(NULL), nextNode_(NULL), prevNode_(NULL) {}
BTREE वर्ग के लिए एक निजी चर है:
btree_node<T>* rbegin_;
कौन सा है कि मैं क्या कर रहा हूँ संशोधित । rbegin_ शुरू में साथ BTREE निर्माता में एक खाली नोड के लिए सेट है:
btree_node<T> end(NULL);
rbegin_ = &end;
यह मेरी नोड निर्माता है, जो कुछ नहीं करता है की तरह लगता है, rbegin- का मूल्य संशोधित कर रहा है> मूल्य() ....
किसी भी मदद की सराहना की।
आशा है कि आप तीन के नियम का पालन कर रहे हैं। –
हाय अल, मेरी अज्ञानता के लिए खेद है, लेकिन "तीन का शासन" क्या है? सादर। मैं निश्चित रूप से इसका पालन करने की कोशिश करूंगा, अगर यह वास्तव में पालन करने के लिए कुछ उचित है :) – Mick
इसे देखें [व्हाट्स-द-द-नियम-ऑफ-थ्री] (http://stackoverflow.com/questions/4172722/what- तीनों का नियम है) –