pila .h
Código: Seleccionar todo
#include<iostream>
using namespace std;
template<typename T>
class Pila
{
private:
struct Nodos
{
T element;
Nodos *Siguente;
} *ultimo;
unsigned int elementos;
public:
Pila();
~Pila();
void push( const T &nuevo);
T pop();
T & Cima();
bool vacia();
unsigned int Altura();
};
pila.cpp
Código: Seleccionar todo
#include"pila.h"
template<typename T>
Pila<T>::Pila()
{
elementos=0;
}
template<typename T>
Pila<T>::~Pila()
{
while(elementos!=0)
{
pop();
}
}
template<typename T>
void Pila<T>::push( const T &nuevo)
{
Nodos *aux= new Nodos;
aux->element=nuevo;
aux->Siguente=ultimo;
ultimo=aux;
elementos++;
}
template<typename T>
T Pila<T>::pop()
{
T Salvado;
Nodos *aux=ultimo;
Salvado=aux->element;
ultimo=ultimo->Siguente;
delete aux;
elementos--;
return Salvado;
}
template<typename T>
T &Pila<T>::Cima()
{
return ultimo->element;
}
template<typename T>
bool Pila<T>::vacia()
{
if(elementos==0)
return true;
else
return false;
}
template<typename T>
unsigned int Pila<T>::Altura()
{
return elementos;
}
Código: Seleccionar todo
#include"pila.h"
#include<string>
main.cpp
int main()
{
int a,v,b;
Pila<int > pilas();
a=2;
v=24;
b=2345;
pilas.push(a);
cout << "Hello World!" << endl;
return 0;
}
y me da este error:
main.cpp:11: error: request for member 'push' in 'pilas', which is of non-class type 'Pila<int>()'
porque???
ya resolvi el problema resulta que en el include del main en lugar de incluir el .h debo de incluir el .cpp
de esta manera.
#include"pila.cpp"
aunque ahora surge la pregunta porque??