Se me olvido decir que en la clase Pila no me deja mensajes con el "cout", me detecta error, ¿ a que se debera ? Lo deje como comentario.
Bueno, en este foro mucha gente me ha sacado de apuros, se los agradezco, ojala tambien en esta pueda salir, saltar de Java a C++ me fue un poco dificil, ahora pongo el codigo
Lo que me sale en la ventana de comandos:
Código:
"/usr/bin/make" -f nbproject/Makefile-Debug.mk QMAKE= SUBPROJECTS= .build-conf
make[1]: Entering directory `/cygdrive/c/Documents and Settings/Administrador/Escritorio/C++/Repaso39'
"/usr/bin/make" -f nbproject/Makefile-Debug.mk dist/Debug/Cygwin_4.x-Windows/repaso39.exe
make[2]: Entering directory `/cygdrive/c/Documents and Settings/Administrador/Escritorio/C++/Repaso39'
mkdir -p build/Debug/Cygwin_4.x-Windows/_ext/931385675
rm -f build/Debug/Cygwin_4.x-Windows/_ext/931385675/Pila.o.d
g++ -c -g -MMD -MP -MF build/Debug/Cygwin_4.x-Windows/_ext/931385675/Pila.o.d -o build/Debug/Cygwin_4.x-Windows/_ext/931385675/Pila.o ../Repaso39/Pila.cpp
mkdir -p dist/Debug/Cygwin_4.x-Windows
g++ -o dist/Debug/Cygwin_4.x-Windows/repaso39 build/Debug/Cygwin_4.x-Windows/_ext/931385675/Pila.o build/Debug/Cygwin_4.x-Windows/main.o
build/Debug/Cygwin_4.x-Windows/main.o: In function `main':
/cygdrive/c/Documents and Settings/Administrador/Escritorio/C++/Repaso39/main.cpp:8: undefined reference to `Pila<int>::Pila(int)'
/cygdrive/c/Documents and Settings/Administrador/Escritorio/C++/Repaso39/main.cpp:10: undefined reference to `Pila<int>::~Pila()'
collect2: error: ld returned 1 exit status
nbproject/Makefile-Debug.mk:63: recipe for target `dist/Debug/Cygwin_4.x-Windows/repaso39.exe' failed
make[2]: *** [dist/Debug/Cygwin_4.x-Windows/repaso39.exe] Error 1
make[2]: Leaving directory `/cygdrive/c/Documents and Settings/Administrador/Escritorio/C++/Repaso39'
nbproject/Makefile-Debug.mk:60: recipe for target `.build-conf' failed
make[1]: *** [.build-conf] Error 2
make[1]: Leaving directory `/cygdrive/c/Documents and Settings/Administrador/Escritorio/C++/Repaso39'
nbproject/Makefile-impl.mk:39: recipe for target `.build-impl' failed
make: *** [.build-impl] Error 2
BUILD FAILED (exit value 2,, total time: 5s)
Ahora el codigo
Código
#include <cstdlib> #include "Pila.h" using namespace std; int main(int argc, char** argv) { Pila<int> pila(10); //Creando una pila de enteros de 10 espacios return 0; }
Código
#ifndef PILA_H #define PILA_H template <class T> class Pila { public: Pila(int t); Pila(const Pila& orig); virtual ~Pila(); void push(T e); T pop(); bool isEmpty(); bool isFull(); private: int tam; // El tamanio del arreglo int top; // La posicion del ultimo elemento T *arreglo; }; #endif /* PILA_H */
Código
#include "Pila.h" #include <iostream> template <class T> Pila<T>::Pila(int t) { this->tam = t; this->top = -1; this->arreglo = new T[tam]; } template <class T> Pila<T>::Pila(const Pila& orig) { // Por implementar } template <class T> Pila<T>::~Pila() { delete []arreglo; } /* * Funcion que agrega un elemento a la pila. */ template <class T> void Pila<T>::push(T e){ if(isFull()){ //cout << "\nLa pila esta llena\n"; }else{ arreglo[++top] = e; } } /** * Funcion que obtiene un elemento de la pila. * @return El elemento que esta el tope de la pila. */ template <class T> T Pila<T>::pop(){ if(isEmpty()){ //cout << "\nLa pila esta vacia\n"; }else{ return arreglo[top--]; } } /* * Funcion que revisa si la pila esta vacia */ template <class T> bool Pila<T>::isEmpty(){ if(top == -1){ return true; } } /* * Funcion que revisa si la pila esta llena */ template <class T> bool Pila<T>::isFull(){ if(top == tam){ return true; } }