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
ARBOL.cpp
NODO.hpp
NODO.cpp
Un saludo y gracias.
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 (cpp) [Seleccionar]
#ifndef _ARBOL_HPP_
#define _ARBOL_HPP_
#include "NODO.hpp"
using namespace std;
class Arbol{
private:
Nodo * raiz;
public:
Arbol();
};
#endif
ARBOL.cpp
Código (cpp) [Seleccionar]
#include "ARBOL.hpp"
Arbol::Arbol(){}
NODO.hpp
Código (cpp) [Seleccionar]
#ifndef _NODO_HPP_
#define _NODO_HPP_
#include <string>
#include "ARBOL.cpp"
using namespace std;
class Nodo {
private:
string clave;
int altura;
Arbol * izquierdo;
Arbol * derecho;
public:
Nodo();
};
#endif
NODO.cpp
Código (cpp) [Seleccionar]
#include "NODO.hpp"
Nodo::Nodo(){
string = "";
int = 0;
izquierdo = NULL;
derecho = NULL
}
Un saludo y gracias.