iteradores son similares en esto y hacen un estudio interesante.
iteradores de const son a menudo la base para iteradores 'no const', y a menudo encontrará const_cast<>()
o modelos de estilo C utilizados para descartar const de la clase base con accesos en el niño.
Editar: comentario fue
Tengo un iterador postal del lugar donde la const hereda de la no-const
Este sería en general la estructura inheritence mal (si su decir lo que creo que lo es), la razón es que los niños no deberían ser menos restrictivos que los padres.
dice que tiene algún algoritmo tomando su iterador zip, ¿sería apropiado pasar un iterador de const a un const no?
si tiene un contenedor const, solo podría pedirle un iterador de const, pero luego el const iterator se deriva de un iterador por lo que solo debe usar las funciones en el padre para tener acceso no const.
Aquí es un esquema rápido de sucesiones sugerido siguiendo el modelo STL tradicional
class ConstIterator:
public std::_Bidit< myType, int, const myType *, const mType & >
{
reference operator*() const { return m_p; }
}
class Iterator : public ConstIterator
{
typedef ConstIterator _Mybase;
// overide the types provided by ConstIterator
typedef myType * pointer;
typedef myType & reference;
reference operator*() const
{
return ((reference)**(_Mybase *)this);
}
}
typedef std::reverse_iterator<ConstIterator> ConstReverseIterator;
typedef std::reverse_iterator<Iterator> ReverseIterator;
Usted no es el primero: http://stackoverflow.com/questions/856542/elegant-solution-to-duplicate-const-and-non-const-getters –
gracias Hasta que, no apareció en mi búsqueda – Steve