【发布时间】:2011-12-08 17:01:00
【问题描述】:
我的 C++ 指针有问题,如果有人能够与我分享他们的专业知识,那就太好了!
我得到的输出是:
1:
2:
END: C
1:C
2:E
END: E
我期待的输出是:
1:
2:
END: C
1:C
2:C
END: E
相关代码是这样的:
我的测试.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()....的值。
任何帮助表示赞赏。
【问题讨论】:
-
希望你遵守三法则。
-
嗨,Als,抱歉我的无知,但什么是“三法则”?问候。我肯定会尝试遵循它,如果它确实是合理的遵循:)