Mic*_*ick 3 c++ iterator b-tree operator-overloading post-increment
我正在为一个b树创建自己的迭代器,而且我一直坚持如何在没有编译器抱怨的情况下实现后增量运算符.
错误消息如下所示,并且是预期的(因为我正在做错误消息所说的)
cc1plus: warnings being treated as errors
error: reference to local variable 'temp' returned
Run Code Online (Sandbox Code Playgroud)
我需要使用-Wall和-Werror标记编写函数,所以希望有人能够帮助我解决这个问题.
这是功能:
template <typename T> btree_iterator<T>& btree_iterator<T>::operator++(int) {
btree_iterator<T> temp(*this);
pointee_ = pointee_->nextNode();
return temp;
}
Run Code Online (Sandbox Code Playgroud)
我环顾四周,我只能找到人们实现操作员的例子.
每当我以前遇到这样的问题时,我'新'了我正在返回的对象,以便它不再是临时的.但由于这是一个迭代器,如果我这样做,我将无法释放内存,从而导致内存泄漏.
如果有人能够帮助我,那将非常感谢!如果我的设计还有其他任何可以帮助您理解问题的信息,请告诉我.
问候.
错误很明显 -
error: reference to local variable 'temp' returned
Run Code Online (Sandbox Code Playgroud)
在您的函数中,您将返回引用temp,这是临时对象.
也许你需要返回一份副本(因为你不想使用new).所以与其
template <typename T> btree_iterator<T>& btree_iterator<T>::operator++(int) {
Run Code Online (Sandbox Code Playgroud)
你可能需要
// note the missing `&`...............vv
template <typename T> btree_iterator<T> btree_iterator<T>::operator++(int) {
Run Code Online (Sandbox Code Playgroud)