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');
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) {}
のbtreeクラスは、プライベート変数があります:私は変更てるものですどの
btree_node<T>* rbegin_;
を。 rbegin_は、最初にbtreeのコンストラクタで空のノードに設定されます、それは何もしません、私のノード・コンストラクター、のように思える
btree_node<T> end(NULL);
rbegin_ = &end;
rbegin-の値を変更している>値()....
助けていただければ幸いです。
希望あなたは3のルールに従っています。 –
こんにちはアルズ、私の無知に申し訳ありませんが、 "三のルール"は何ですか?よろしく。それが本当に何か合理的な場合は、私は間違いなくそれに従うようにしようとします:) – Mick
これをチェックアウト[何の - is-the-the-rule-of-three](http://stackoverflow.com/questions/4172722/what- is-the-the-rule-of-three) –