- 515 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 08:30:05 ]
- 演算子のオーバーロードについて質問があります。STLのIteratorみたいに、
List<int> *list = new List<int>(); llist.push_back(1); llist.push_back(2); for(Iterator* iter = (ListIterator<int>*)list->iterator(); iter->hasNext(); iter++){ printf("%d ", (*iter)); } このような書き方ができるようにソースコードを書きたいのですがうまくいきません。 以下が(全部載せるには少し長いので)自分のソースの抜粋です。 class Iterator{ public: //省略 virtual bool hasNext() = 0; virtual Iterator<Type> &next() = 0; virtual Iterator<Type> &operator++() = 0; virtual Type& operator*() = 0; }; template <class Type> class ListIterator : Iterator<Type>{ public: //省略 Iterator<Type>& operator++ (int dummy){ return next();: } Type& operator*(){ return value;//現在イテレータが指しているセルの内容 } } このように定義したものを上のように実行すると、4227856のような数字が連続して表示されてしまいます。また、for文のところで実行時エラーが出ます。 どう書き直せばよいでしょうか……。 (素直にSTL使えって話なんですがね……OTL)
|

|