El problema me da a mi que esta en las cabeceras de los .h. Pero no lo consigo ver, os dejo el código a ver si alguien identifica el problema. Gracias de antemano =)!!
Código:
//pila.h
#ifndef __PILA_H__
#define __PILA_H__
#include "Nodo.h"
#include <iostream>
#include <string>
class Pila
{
private:
Nodo *primero;
unsigned int numElemntos;
void borrarCima();
public:
Pila();
~Pila();
void apilar(char);
bool desapilar(char &);
unsigned int getElemntos();
bool vaciaP();
};
#endif
Código:
//Cola.h
#ifndef __COLA_H__
#define __COLA_H__
#include "Nodo.h"
#include <iostream>
#include <string>
class Cola
{
private:
Nodo *primero;
Nodo *ultimo;
unsigned int numElemntos;
void borrarCabeza();
public:
Cola();
~Cola();
void encolar(char);
bool desencolar(char &);
bool vaciaC();
unsigned int getElemntos();
};
#endif
Código:
//Nodo.h
#ifndef __NODO_H__
#define __NODO_H__
#include "Pila.h"
#include "Cola.h"
#include <iostream>
#include <string>
class Nodo
{
friend class Pila;
friend class Cola;
private:
Nodo *siguiente;
char caracter;
public:
Nodo(char);
char getElemento();
void setElemento(char);
};
#endif
Código:
//Pila.cpp
#include "Nodo.h"
#include "Pila.h"
#include <iostream>
#include <string>
using namespace std;
Pila::Pila()
{
primero = NULL;
numElemento = 0;
};
Pila::~Pila()
{
while(!vaciaP()) //{borrarcima();}
{
Nodo *p = primero;
primero = primero->siguiente;
delete (p);
}
};
bool Pila:: VaciaP()
{
return primero; //numElementos==0 ->compara para tener un bool
};
void Pila::apilar(char c)
{
Nodo *p = new Nodo(c);
p->siguiente = primero;
primero = p;
numElementos++;
};
void Pila::borrarCima()
{
Nodo *p = primero;
primero = primero->siguiente;
delete p;
numElementos--;
}
bool Pila::desapilar (char &c)
{
Nodo *aux;
if(VaciaP())
{
cout << "La pila esta vacia \n";
return false;
}
else
{
aux = primero;
primero = primero->siguiente;
delete(aux);
numElementos--;
return true;
}
};
char Pila::getElementos()
{
return numElementos;
};
Código:
//Cola.cpp
#include "Nodo.h"
#include "Cola.h"
#include <iostream>
#include <string>
using namespace std;
Cola::Cola()
{
Nodo *primero = NULL;
Nodo *ultimo = NULL;
unsigned int numElemntos = 0;
};
Cola::~Cola()
{
while(!vaciaC()) //{borrarCabeza();}
{
Nodo *p = primero;
primero = primero->siguiente;
delete (p);
}
};
void Cola::encolar(char c)
{
Nodo *p = new Cola(c);
if (vaciaC())
{
primero = *p;
ultimo = *p;
numElementos++;
}
else
{
p->siguiente = ultimo;
ultimo = p;
numElementos++
}
};
bool Cola::desencolar (char &c)
{
Nodo *aux;
if(VaciaC())
{
cout << "La cola esta vacia \n";
return false;
} else if (numElementos==1)
{
delete (primero);
primero=null;
ultimo=null;
numElementos --;
return true;
}
else
{
aux = primero;
primero = primero->siguiente;
delete(aux);
numElementos--;
return true;
}
};
void Pila::borrarCabeza()
{
Nodo *p = primero;
primero = primero->siguiente;
if(primero == NULL)
{
final = NULL;
}
delete (p);
numElementos--;
};
char Cola::getElementos()
{
return numElementos;
};
Código:
//Nodo.cpp
#include "Nodo.h"
#include <iostream>
#include <string>
using namespace std;
Nodo::Nodo(char c)
{
caracter = c;
siguiente = '\0'; //NULL
};
char Nodo::getElemento()
{
return caracter ;
};
void Nodo::setElemento(char c)
{
caracter = c;
};
Y los fallos que me tira el compilador son los siguientes:
1 C:\Dev-Cpp\Nodo.h:3, from Nodo.cpp In file included from Nodo.h:3, from Nodo.cpp
1 C:\Dev-Cpp\Nodo.cpp from Nodo.cpp
11 C:\Dev-Cpp\Pila.h ISO C++ forbids declaration of `Nodo' with no type
11 C:\Dev-Cpp\Pila.h expected `;' before '*' token
1 C:\Dev-Cpp\Nodo.h:4, from Nodo.cpp In file included from Nodo.h:4, from Nodo.cpp
1 C:\Dev-Cpp\Nodo.cpp from Nodo.cpp
11 C:\Dev-Cpp\Cola.h ISO C++ forbids declaration of `Nodo' with no type
11 C:\Dev-Cpp\Cola.h expected `;' before '*' token
12 C:\Dev-Cpp\Cola.h ISO C++ forbids declaration of `Nodo' with no type
12 C:\Dev-Cpp\Cola.h expected `;' before '*' token
C:\Dev-Cpp\Makefile.win [Build Error] [Nodo.o] Error 1