我在C++中指向了一個問題,如果有人能夠與我分享他們的專業知識,那將會很棒!C++中的意外指針行爲
我得到的輸出是:
1:
2:
END: C
1:C
2:E
END: E
我所期待的輸出是:
1:
2:
END: C
1:C
2:C
END: E
相關的代碼是這樣的:
我TEST.CPP
tree.insert('C');
tree.insert('E');
The inse RT功能:
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) {}
B樹類有一個私有變量:
btree_node<T>* rbegin_;
這是我改變什麼。 rbegin_初始設置爲空節點在B樹構造器:
btree_node<T> end(NULL);
rbegin_ = &end;
好像我的節點構造函數,它什麼也不做,正在修改rbegin-的值>值()......
任何幫助表示讚賞。
希望你遵循三的規則。 –
嗨,Als,對不起我的無知,但是什麼是「三的統治」?問候。我一定會試着去關注它,如果確實是合理的話:) – Mick
檢查一下[what-the-the-rule-of-three](http://stackoverflow.com/questions/4172722/what-是三的規則) –