高手们帮忙分析一下
先看代码:
- C/C++ code
typedef vector<char> VC;class back_encoder_iterator { VC& container; void push(const char* p) { while(*p) container.push_back(*p++); }public: back_encoder_iterator(VC& v) : container(v) {} back_encoder_iterator& operator=(char); back_encoder_iterator& operator*() { return *this; } back_encoder_iterator& operator++() { return *this; } back_encoder_iterator& operator++(int) { return *this; }};back_encoder_iterator&back_encoder_iterator::operator=(char c){ switch(c) { case '<' : push("<") ; break; case '>' : push(">") ; break; case '&' : push("&"); break; case '\n': push("<BR>\n"); break; default : container.push_back(c); break; } return *this;}inline back_encoder_iterator back_encoder(VC& x) { return back_encoder_iterator(x);}// 下面是抛出问题的地方int HttpBuf::sync(){ if(owner_.iword(xindex)) ::copy(pbase(),pptr(),back_encoder(buffer_)); // 此处抛出错误 else ::copy(pbase(),pptr(),back_inserter(buffer_)); setp(pbase(), epptr()); return 0;}抛出的错误是:
stl_iterator_base_types.h:129: 错误:没有名为 ‘iterator_category’ 的类型
stl_iterator_base_types.h:130: 错误:没有名为 ‘value_type’ 的类型
如何解决?请不吝赐教
[解决办法]
iterator需要定义几个内部类型。请参考下面文章:
http://www.oonumerics.org/tmpw00/becker.html
[解决办法]