Доброго времени суток Хочу в своем классе сделать собственный iterator чтобы он работал как iterator любого контейнера. Вот код:
| Код | class PА { private: std::list<Interface> vars; public: class iterator { private: std::list<Interface>::iterator lii; public: std::list<Interface>::iterator operator++() {return ++lii;} void operator=(std::list<Interface>::iterator lti) {lii=lti;} bool operator==(std::list<Interface>::iterator lti) const {return lii == lti;} bool operator!=(std::list<Interface>::iterator lti) const {return lii != lti;} }; std::list<Interface>::iterator begin() {return vars.begin();} std::list<Interface>::iterator end(){return vars.end();} //другие функции };
|
класс компилируется но при попытке использования
| Код | PA pure; PA::iterator pai; for(pai = pure.begin(); pai != pure.end(); ++pai) { if(pai->var().empty()) //и.т.д.
|
компилятор жалуется:
| Цитата | 91: error: base operand of -> has non-pointer type Assignment::PA::iterator
|
можно ли как нибудь убедить компилятор что мой iterator является указателем? Ну и прокомментируйте если не затруднит любые другие ошибки. |