申し訳ありませんが、フォーマットが少しオフになっていれば、私はここで新しいです。私も解決策を探してみましたが、うまくいきませんでした。演算子++をオーバーロードしようとしても、オブジェクトなしでメンバ関数を呼び出すことはできません
私は、バイナリ検索ツリークラスのイテレータを作成しようとしています。
template<class Key, class Value>
class BST {
protected:
//stuff
public:
//stuff
class iterator {
public:
//member functions
iterator& operator++() {
//gets next node
}
}
}
は、だから私の主な機能には、私は
BST<string, int>::iterator it = bst.begin()
でイテレータを作成し、それが動作するように非常に大まかに、私のコードが見えます。イテレータを使用してノードにアクセスできます。しかし、私がしようとする次の行で
it++;
私は "オブジェクトなしでメンバ関数を呼び出すことはできません"というコンパイラエラーが発生します。なぜ私は理解できないのですか?私が演算子++を 'it'に呼んでいるのであれば、 'it'だけで動作するべきではないでしょうか?
オーバーロードされた演算子は、プリインクリメントの使用です。ポストインクリメントのための 'iterator&operator ++(int)'です。 –