¿Es mejor hacerlo sin punteros?
#include <iostream> #define MAX 5 using namespace std; template <class T> class Cola { private: T EspacioCola[MAX]; int Frente, Final; public: Cola(); void InsertaCola(T); void EliminaCola(T*); int ColaLlena(); int ColaVacia(); }; template<class T> Cola<T>::Cola() { Frente = -1; Final = -1; } template<class T> void Cola<T>::InsertaCola(T Dato) { if (!ColaLlena()) { EspacioCola[++Final] = Dato; if (Final == 0) Frente = 0; } else cout << "Cola llena, no se puede insertar" << endl; } template<class T> void Cola<T>::EliminaCola(T *Dato) { if (!ColaVacia()) { *Dato = EspacioCola[Frente]; if (Frente == Final) { Frente = -1; Final = -1; } else Frente ++; } else cout << "Cola vacía, no se puede eliminar" << endl; } template<class T> int Cola<T>::ColaLlena() { if (Final == MAX -1) return 1; else return 0; } template<class T> int Cola<T>::ColaVacia() { if (Frente == -1) return 1; else return 0; } int main() { Cola<int> c; for (int i=1; i<6; i++) c.InsertaCola(i); int aux; c.EliminaCola(&aux); cout << "Elemento eliminado de la cola: " << aux << endl; c.InsertaCola(8); return 0; }