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