es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Es posible crear una clase de iterador “externo” (es decir, sin acceso al tipo de datos original)?

Estoy trabajando en un proyecto donde sería útil crear un tipo de iterador para una clase MFC llamada CArray.

Dado que CArray es parte de las bibliotecas MFC, no tengo acceso a este objeto.

Aún no he entendido completamente cómo crear iteradores, pero hasta donde tengo entendido, normalmente se crearía un tipo de iterador como miembro del tipo de clase al que corresponde el iterador. En otras palabras, se requiere acceso a la clase misma.

¿Es posible crear un iterador “externo” a una clase? Es decir, externo a la clase CArray.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Es posible crear un iterador externo a la clase CArray, pero puede requerir trabajo adicional.

    Un enfoque es crear una clase separada que sirva como iterador para CArray. Esta clase de iterador necesitaría tener acceso a los miembros de datos privados de CArray para poder iterar a través de los elementos.

    Otro enfoque es utilizar una función con plantillas que tome CArray como argumento y devuelva un objeto iterador. El objeto iterador debería ser definido fuera de la clase CArray, pero aún puede tener acceso a los miembros de datos privados utilizando declaraciones de amistad.

    Independientemente del enfoque utilizado, es importante asegurarse de que el iterador cumpla con la semántica correcta y se comporte como se espera. Esto incluye implementar los métodos estándar del iterador, como operator++, operator* y operator== para la comparación.

Comments are closed.