Foros del Web » Programación para mayores de 30 ;) » C/C++ »

[SOLUCIONADO] Acceder a mismbros de una clase mediante iteradores

Estas en el tema de Acceder a mismbros de una clase mediante iteradores en el foro de C/C++ en Foros del Web. Bueno, intentaré plantear la pregunta lo más clara posible y esquematizando "los actores" que intervienen en la duda. Tengo un grafo que cuyos nodos son ...
  #1 (permalink)  
Antiguo 15/09/2014, 02:48
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 meses
Puntos: 10
Acceder a mismbros de una clase mediante iteradores

Bueno, intentaré plantear la pregunta lo más clara posible y esquematizando "los actores" que intervienen en la duda.
Tengo un grafo que cuyos nodos son objetos de una clase y cuyas aristas son miembros de otra clase.

En un momento dado me interesa meter en una lista las direcciones (los punteros) de los ancestros de un nodo dado, para luego hacerle "las perrerías" que tengo en mente. Entonces, cuando quiero acceder a algún miembro de algún nodo, se me produce violación de segmento.

Hago un ejemplo esquemático de lo que quiero:

Las clases que van en nodos y aristas respectivamente
Código C++:
Ver original
  1. template <typename DATON, typename DATOA>
  2. struct nodo
  3. {
  4.     DATON datonodo;
  5. ............
  6. };
  7.  
  8. template <typename DATOA, typename DATON>
  9. struct arista
  10. {
  11.     DATOA datoarista;
  12. ...................
  13. };

Ahora tengo un grafo de la forma
Código C++:
Ver original
  1. Grafo<DATON,DATOA>;

Una vez concretados los nodos y aristas en las clases Clase_A y Clase_B, defino la lista y el iterador:
Código C++:
Ver original
  1. std::list<nodo<Clase_A,Clase_B>*> listanodos;
  2. std::list<nodo<Clase_A,Clase_B>*>::iterator Iterador;

Puedo usar los métodos front() y end() para leer:
Esto sí me funciona
Código C++:
Ver original
  1. std::cout<<listanodos.front()->datonodo.LeeDato();
  2. std::cout<<listanodos.back()->datonodo.LeeDato();

Pero ahora, cuando quiero acceder a los datos de un miembro de la lista, no sé cómo hacerlo.
Intento ésto:
Código C++:
Ver original
  1. std::cout<<(*Iterador)->datonodo.LeeDato();

Y obtengo violación de segmento.

¿Alguna ayudita?
  #2 (permalink)  
Antiguo 15/09/2014, 09:17
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 6 meses
Puntos: 10
Respuesta: Acceder a mismbros de una clase mediante iteradores

Lo que es no saber.
Pensaba que el problema estaba en que el acceso era a una lista de punteros...y eso no tiene nada que ver.
Era tan tonto como que estaba recorriendo la lista de atrás a adelante, y para ello he de usar un reverse_iterator, e ir desde rbegin() a rend()

En fin, disculpas por la duda tan tonta.

Etiquetas: clase, ejemplo, funcion, int, mediante, punteros
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:31.