私は現在、bツリー用に独自のイテレーターを作成していますが、コンパイラーが文句を言わずにポストインクリメント演算子を実装する方法に固執しています。
エラーメッセージは次のとおりであり、予想されます(エラーメッセージの内容を正確に実行しているため)
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;
}
周りを見回してみたところ、今の自分の姿を正確に実装している人の例しか見つかりませんでした。
以前にこのような問題が発生したときはいつでも、返されるオブジェクトを「新しい」ものにして、一時的なものではなくなった。ただし、これはイテレータであるため、これを実行すると、後でメモリを解放できなくなり、メモリリークが発生します。
誰かが私を助けることができれば、それは大いにありがたいです!問題を理解するのに役立つ私のデザインについて他に何かあれば教えてください。
よろしく。