Sí, eso es obligatorio porque se compila sólo cuando se encuentra utilizada.
Por ejemplo "Queue<int>" dispara la compilación del código del template para
la int.
On 9/26/07, Mauro Ciancio <[EMAIL PROTECTED]> wrote:
>
> Ya anduvo, era poner todo en el mismo .h.
> Gracias
>
> On 9/26/07, Mauro Ciancio <[EMAIL PROTECTED]> wrote:
> >
> > Hola!
> > Estoy implementando una cola con templates en c++ y cuando
> > trato de instanciar un objeto me tira:
> >
> > [Linker error] undefined reference to `Queue<int>::Queue()'
> > > [Linker error] undefined reference to `Queue<int>::~Queue()'
> >
> >
> > Este es el .h
> >
> > template <typename E>
> > class Queue {
> > public:
> > Queue();
> > virtual ~Queue();
> > void push(E* element);
> > E* pop();
> > bool isEmpty();
> > private:
> > std::vector<E*> elements;
> > };
> >
> >
> > Este el cpp:
> >
> > template <class E> inline
> > Queue<E>::~Queue() {
> > E* element;
> > while (!isEmpty()) {
> > element = pop();
> > delete element;
> > }
> > }
> >
> > template <class E> inline
> > bool Queue<E>::isEmpty() {
> > return !this->elements.size();
> > }
> >
> > template <class E> inline
> > void Queue<E>::push(E* element) {
> > elements.push_back(element);
> > }
> >
> > template <class E> inline
> > E* Queue<E>::pop() {
> > E* element = 0;
> > if (!isEmpty()) {
> > element = elements[0];
> > elements.erase(elements.begin());
> > }
> > return element;
> > }
> >
> > Si alguien tiene alguna sugerencia, bienvenida.
> >
> > Gracias, Mauro.
> >
>
>
> _______________________________________________
> Lista de correo Programacion.
> [email protected]
> http://listas.fi.uba.ar/mailman/listinfo/programacion
>
>
--
_Leo_
(aka Lele)
_______________________________________________
Lista de correo Programacion.
[email protected]
http://listas.fi.uba.ar/mailman/listinfo/programacion