У меня проблема с моими указателями в C ++, и было бы здорово, если бы кто-то смог поделиться со мной своим опытом!
Вывод, который я получаю:
1:
2:
END: C
1:C
2:E
END: E
Вывод, который я ожидал:
1:
2:
END: C
1:C
2:C
END: E
Код релевантности такой:
my test.cpp
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-> value () ....
Любая помощь приветствуется.