Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: Alcarendor en 3 Diciembre 2013, 01:21 am



Título: Problema con los tipos en una inclusión doble.
Publicado por: Alcarendor en 3 Diciembre 2013, 01:21 am
Buenas, tengo un problema con una sencilla inclusión doble en C++. Estoy haciendo una práctica de un árbol AVL y, para construirla, se me pide que haya una clase Nodo con dos punteros a otra clase Arbol, mientras que a la vez la clase Arbol contenga un atributo tipo Nodo.

Bien, el error está en que, incluso poniendo en #ifndef y demás, cuando incluyo mutuamente ambas clases el compilador (g++ sobre Linux) se vuelve loco y los tipos empiezan a fallar de manera aleatoria, diciendo que Arbol y/o Nodo no definen ningún tipo. Os dejo el texto completo de la definición de las clases, a ver si alguien ve el error que tengo y no se ver ya que, aunque he aplicado otras soluciones a problemas similares (incluidas soluciones encontradas en este foro) no logro dar con la tecla (que seguro que luego es una tontería).

ARBOL.hpp
Código
  1. #ifndef _ARBOL_HPP_
  2. #define _ARBOL_HPP_
  3.  
  4. #include "NODO.hpp"
  5.  
  6. using namespace std;
  7.  
  8. class Arbol{
  9.  
  10. private:
  11. Nodo * raiz;
  12. public:
  13. Arbol();
  14.  
  15. };
  16. #endif

ARBOL.cpp

Código
  1. #include "ARBOL.hpp"
  2.  
  3. Arbol::Arbol(){}

NODO.hpp
Código
  1. #ifndef _NODO_HPP_
  2. #define _NODO_HPP_
  3.  
  4. #include <string>
  5. #include "ARBOL.cpp"
  6.  
  7. using namespace std;
  8.  
  9. class Nodo {
  10. private:
  11. string clave;
  12. int altura;
  13. Arbol * izquierdo;
  14. Arbol * derecho;
  15. public:
  16. Nodo();
  17.  
  18. };
  19.  
  20. #endif

NODO.cpp
Código
  1. #include "NODO.hpp"
  2.  
  3. Nodo::Nodo(){
  4. string = "";
  5. int = 0;
  6. izquierdo = NULL;
  7. derecho = NULL
  8. }

Un saludo y gracias.