我目前正在为 b-tree 创建自己的迭代器,并且我一直坚持如何在编译器不抱怨的情况下实现后增量运算符。
错误消息如下,并且是预期的(因为我完全按照错误消息所说的那样做)
cc1plus: warnings being treated as errors
error: reference to local variable 'temp' returned
我需要使用 -Wall 和 -Werror 标签编写函数,因此希望有人能够帮助我解决这个问题。
这是功能:
template <typename T> btree_iterator<T>& btree_iterator<T>::operator++(int) {
btree_iterator<T> temp(*this);
pointee_ = pointee_->nextNode();
return temp;
}
我环顾四周,我只能找到实施运营商的人的例子,这正是我目前的情况。
每当我以前遇到这样的问题时,我都会对要返回的对象进行“新”处理,这样它就不再是临时的了。但由于这是一个迭代器,如果我这样做了,之后我将无法释放内存,从而导致内存泄漏。
如果有人能够帮助我,那将不胜感激!如果我的设计还有什么可以帮助您理解问题的,请告诉我。
问候。