Ver Mensaje Individual
  #2 (permalink)  
Antiguo 28/06/2016, 05:07
dehm
 
Fecha de Ingreso: septiembre-2010
Mensajes: 494
Antigüedad: 14 años, 2 meses
Puntos: 10
Respuesta: Como declarar un tipo

Aprovechando que me he equivocado con la Vista Previa y le he dado a Enviar sigo en otro mensaje y así se verá menos denso el primero.

El caso es que con lo puesto arriba, puedo manejar mi grafo así:

Código C++:
Ver original
  1. #include <iostream>
  2. #include "Grafo.h"
  3. using namespace std;
  4.  
  5. typedef char datonodo_t;
  6. typedef int datoarista_t;
  7.  
  8. typedef nodo<datonodo_t,datoarista_t>* pNodo;
  9. typedef arista<datoarista_t,datonodo_t>* pArista;
  10. typedef nodo<datonodo_t,datoarista_t> t_nodo;
  11. typedef arista<datoarista_t,datonodo_t> t_arista;
  12.  
  13. int main()
  14. {
  15.     Grafo<datonodo_t,datoarista_t>g;
  16.     pNodo A = new t_nodo('A');
  17.     pNodo B = new t_nodo('B');
  18.     pNodo C = new t_nodo('C');
  19.  
  20.     pArista A_A=0;
  21.     pArista A_B = new t_arista(10);
  22.     pArista A_C = new t_arista(5);
  23.  
  24.     g.InsertarHijo(A,A,A_A,A_A);
  25.     g.InsertarHijo(A,B,A_A,A_B);
  26.     g.InsertarHijo(A,C,A_A,A_C);
  27.  
  28.     return 0;
  29. }

Por ahora vamos bien...sólo he tenido que volver a redefinir los tipos (supongo que eso se puede y se debe hacer para que no hay que andar redefiniendo tipos en cada clase o ficheros....

Pero ahora quiero recorrer el grafo, para ello tengo esta función en la clase Grafo:
Código C++:
Ver original
  1. void recorrerGrafo(pNodo& inicio, TratarArista& tratamiento);//TratarArista es el objeto functor

Entonces (por fin mi duda!!!) estoy reordenando el código de los functores, y lo primero que hago es volver a definir tipos:
Código C++:
Ver original
  1. #ifndef FUNCTORES_H
  2. #define FUNCTORES_H
  3.  
  4. #include "Grafo.h"
  5.  
  6.  //redefinicion de tipos
  7. typedef char datonodo_t;
  8. typedef int datoarista_t;
  9.  
  10. typedef nodo<datonodo_t,datoarista_t>* pNodo;
  11. typedef arista<datoarista_t,datonodo_t>* pArista;
  12. typedef nodo<datonodo_t,datoarista_t> t_nodo;
  13. typedef arista<datoarista_t,datonodo_t> t_arista;
  14.  
  15. struct TratarArista
  16. {    //miembros:
  17. ....................

Y aquí es cuando me tira el error, ya que me dice que ni nodo ni arista son tipos

Y las preguntas:

1.- Cómo hago para que me reconozca los tipos. En el main.cpp hago lo mismo y no me da problema
2.- Cómo hago para que esta definición de tipos no tenga que declararla en cada clase o en cada fichero?
__________________
Mi calculadora en Qt