Hola, tengo un proyecto para una practica de la universidad de manejar arboles. LA cuestion es la siguiente: cuando intento mostrar el arbol por pantalla sobrecargué los dos operadores de salida como sigue
ostream & operator << (ostream & os, const nTreeLNode<int> * t)
{
os << t;
return os;
}
ostream & operator << (ostream & os, const nTreeLNode<int> & t)
{
if (t.isLeaf(t.root())) // El arbol solo es un nodo raiz
{
os << "Arbol (" << t.label(t.root()) << ")";
return os;
}
LNode<int> * hijo = t.leftMostChild (t.root());
os << " Arbol (" << t.label(t.root());
while (hijo)
{
os << ", " << t.subTree(hijo);
hijo = t.rightSibling (hijo);
}
os << ")";
return os;
}
La cuestion es que cuando imprimo por pantalla, me salen direcciones de memoria y no el árbol. Además, yo lo había hecho de esta forma (modificacion en la
linea 3):
ostream & operator << (ostream & os, const nTreeLNode<int> * t)
{
os << *t;
return os;
}
ostream & operator << (ostream & os, const nTreeLNode<int> & t)
{
if (t.isLeaf(t.root())) // El arbol solo es un nodo raiz
{
os << "Arbol (" << t.label(t.root()) << ")";
return os;
}
LNode<int> * hijo = t.leftMostChild (t.root());
os << " Arbol (" << t.label(t.root());
while (hijo)
{
os << ", " << t.subTree(hijo);
hijo = t.rightSibling (hijo);
}
os << ")";
return os;
}
Pero poniendo el * delante del arbol
linea 3 no me compila mostrandome un error de candidatos o no seq. La verdad es que estoy algo bloqueao. Me podeis echar una mano? Si necesitais ver código de algun archivo o algo decirlo.
Muchas gracias