I am trying to define a Buffer::searchInset method which would work on a const buffer and return an iterator to the inset.
My first try is: Buffer::inset_iterator Buffer::searchInset(Inset const * inset) const { inset_iterator it; inset_iterator end = inset_iterator_end(); for(it = inset_iterator_begin(); it != end; ++it) { if (*it == inset) break; } return it; } However, I get: ../../lyx-devel/src/buffer.C: In method `class Buffer::inset_iterator Buffer::searchInset(const Inset *) const': ../../lyx-devel/src/buffer.C:3787: passing `const Buffer' as `this' argument of `class Buffer::inset_iterator Buffer::inset_iterator_end()' discards qualifiers ../../lyx-devel/src/buffer.C:3788: passing `const Buffer' as `this' argument of `class Buffer::inset_iterator Buffer::inset_iterator_begin()' discards qualifiers make: *** [buffer.o] Error 1 This probably means that I need a Buffer::inset_const_iterator type. How shall I define it? Do I need to duplicate the Buffer::inset_iterator class? I certainly hope not... Could some people who know better than me about C++ iterator semantics help me? JMarc