elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Problema con iterador a lista de punteros
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Problema con iterador a lista de punteros  (Leído 2,430 veces)
SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Problema con iterador a lista de punteros
« en: 24 Julio 2013, 14:32 pm »

Buenas, tengo un problema con un código similar al siguiente:

Código
  1. class Clase1{
  2. public:
  3.    Clase1();
  4.  
  5.    void funcion1();
  6. };
  7.  
  8. class Clase2{
  9.    list<Clase1*> Lista;
  10. public:
  11.    Clase2();
  12.  
  13.    void funcion2();
  14. };
  15.  
  16. void Clase2::funcion2(){
  17.    list<Clase1*>::iterator it = Lista.begin();
  18.    for (; it != Lista.end(); it++){
  19.        it->funcion1(); //Aquí esta el error
  20.    }
  21. }

Es decir, el problema es que no se como llamar a la funcion1 de la Clase1 utilizando un iterador, porque la lista es de punteros. Utilizando vectores se solucionaría, pero para este caso en concreto necesito usar listas, porque necesito hacer un Lista.erase()

Un saludo y espero que alguien me aclare este lío  ;)


En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.926


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema con iterador a lista de punteros
« Respuesta #1 en: 24 Julio 2013, 14:44 pm »

Código
  1. (*it)->funcion1();


En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
eferion


Desconectado Desconectado

Mensajes: 1.248


Ver Perfil
Re: Problema con iterador a lista de punteros
« Respuesta #2 en: 24 Julio 2013, 14:52 pm »

Los iteradores los podrías entender como unos punteros que recorren la lista, arbol, matriz, etc.

Si la lista fuese de elementos estáticos, podrías acceder a sus miembros de la siguiente forma:

Código
  1. class Clase2{
  2.    list<Clase1> Lista;
  3. public:
  4.    Clase2();
  5.  
  6.    void funcion2();
  7. };
  8.  
  9. void Clase2::funcion2(){
  10.    list<Clase1>::iterator it = Lista.begin();
  11.    for (; it != Lista.end(); it++)
  12.    {
  13.        it->funcion1();   // metodo uno
  14.        (*it).funcion1( ); // metodo dos
  15.    }
  16. }

Como tú estás manejando una lista de punteros, tienes que añadir un nivel más de indirección para poder acceder a los miembros del elemento apuntado... que es la solución que te ha dado Eternal Idol.

También en este caso puedes hacer:

Código
  1. Clase* clase = *it;
  2. clase->funcion1( );
En línea

SrCooper

Desconectado Desconectado

Mensajes: 137


Bazinga!


Ver Perfil
Re: Problema con iterador a lista de punteros
« Respuesta #3 en: 24 Julio 2013, 15:41 pm »

Muchas gracias, ya me compila bien  :D
En línea

Eternal Idol
Kernel coder
Moderador
***
Desconectado Desconectado

Mensajes: 5.926


Israel nunca torturó niños, ni lo volverá a hacer.


Ver Perfil WWW
Re: Problema con iterador a lista de punteros
« Respuesta #4 en: 24 Julio 2013, 15:43 pm »

De nadas  ::)
En línea

La economía nunca ha sido libre: o la controla el Estado en beneficio del Pueblo o lo hacen los grandes consorcios en perjuicio de éste.
Juan Domingo Perón
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como hacer un constructor con un iterador
Java
hardjesjlc 4 3,163 Último mensaje 9 Mayo 2010, 18:55 pm
por biribau
Problema con Punteros en C
Programación C/C++
aaronas 8 3,206 Último mensaje 2 Abril 2012, 00:12 am
por david_BS
Problema con punteros.
Programación C/C++
vazquinhos 4 2,093 Último mensaje 20 Septiembre 2012, 18:35 pm
por do-while
Problema con punteros
Programación C/C++
NEGRO_PABLO 3 2,234 Último mensaje 30 Noviembre 2012, 18:41 pm
por twins
Duda Punteros Dobles/Array de punteros
Programación C/C++
MisterJava 2 4,301 Último mensaje 30 Diciembre 2012, 20:19 pm
por MisterJava
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines