Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/09/2014, 02:48
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 13 años, 7 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?