const_iterator2010/11/01 04:48

iterator クラスを作っていて、はまりました。

typedef const iterator const_iterator

として、型を定義した後に戻り値を const_iterator としたメンバ関数を書いてみると、

typename AAA<T>::const_iterator begin() const{
 const iteraotr を戻す
}

という定義と、

typename AAA<T>::iterator begin(){
  ただの iteraotr を戻す
}

という定義が同じだといってコンパイラに怒られました。

どうも、typename を使って const_iterator を指定するのが良くないらしい。

結局、

const typename AAA<T>::const_iterator begin() const

ともう一回 const 指定をすることで逃げましたが、釈然とはしません。

クラスの外で関数定義をしようとすると良くない理由もわからないし。

と困っています。