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??








