[C con Clase] templates

Núria Busom Figueres meteorit666 en hotmail.com
Mar Dic 23 13:40:17 CET 2008







Hola a todos otra vez:

tengo un problemilla con templates, he leido ya lo referente a templates del curso de C++, pero no me ha solucionado mucho. Creo que he puesto <T> de más (o de menos) y entonces no compila, se queja de que no es un template, ¿podeis ayudarme? Os paso mucho codigo, todavia no estan implementadas muchas de las funciones, solo hace falta q mireis la  <T> y template <class T>, a ver si podeis decirme si he puesto algo mal.

#ifndef _ORDEREDLIST_H
#define _ORDEREDLIST_H
#include "Object.h"
#include "Container.h"
#include "ComparableObject.h"

template <class T>
class OrderedList :public List{
    public:
        OrderedList();
        OrderedList(const OrderedList<T>&);
        ~OrderedList();
        virtual put(const T&)=0;
        virtual remove(const T&)=0;
        MyString toString() const;
        
        /*hereda de List:
        virtual void putFirst(const T&)=0;
        virtual void put(const T&, ListIterator<T>&)=0;
        virtual void putLast(const T&)=0;
        virtual void removeFirst() throw (EmptyContainerException) =0;
        virtual void remove(ListIterator<T>&) throw (IteratorException)=0;
        virtual void removeLast()  throw (EmptyContainerException)=0;
        virtual void getFirst(T& t) const throw (EmptyContainerException) =0; 
        virtual void get(T&, ListIterator<T>&) const throw (IteratorException) =0;
        virtual void getLast(T&) const throw (EmptyContainerException)=0;*/
                      
        MyString toString() const;  
        virtual void empty()=0;
};

template <class T>
OrderedList<T>::OrderedList(){}

template <class T>
OrderedList<T>::OrderedList(const OrderedList<T>&){}

template <class T>
OrderedList<T>::~OrderedList(){}

template <class T>
MyString OrderedList<T>::toString() const{
    return MyString("Soy una OrderedList");
}

#endif

y "su heredero":

#ifndef _ORDERED_LINKED_LIST_H
#define _ORDERED_LINKED_LIST_H
#include "Object.h"
#include "Container.h"
#include "OrderedList.h"

template <class T>
class Node{
    T val;
    Node<T>* next;
};


template <class T>
class OrderedLinkedList :public OrderedList<T>{
    
    private:
        Node<T>* first;
        //hereta unsigned int nElems;
        
    public:
        OrderedLinkedList();
        OrderedLinkedList(const OrderedLinkedList<T>&);
        ~OrderedLinkedList();
        
        void copy(const Object&);
        bool operator==(const Object&) const;
          Object* clone() const;
          MyString toString() const;
          
          //unsigned int getSize() const;
         //bool isEmpty() const;
         
        void put(const T&);
        void remove(const T&);
        void get(T&, int);
};


template <class T>
OrderedLinkedList<T>::OrderedLinkedList(){
    first=new Node<T>;
    first->next=NULL;
}

template <class T>
OrderedLinkedList<T>::OrderedLinkedList(const OrderedLinkedList<T>& m){
    first=new Node<T>;
    first->next=NULL;
    this->copy(m);
}

template <class T>
OrderedLinkedList<T>::~OrderedLinkedList(){
    Node<T>* aux;
    while(first!=NULL){
        aux=first;
        first=first->next;
        delete aux;
    }
}

template <class T>
void OrderedLinkedList<T>::copy(const Object&){}

template <class T>
bool OrderedLinkedList<T>::operator==(const Object&) const{}

template <class T>
Object* OrderedLinkedList<T>::clone() const{}

template <class T>
MyString OrderedLinkedList<T>::toString() const{}
          
template <class T>
void OrderedLinkedList<T>::put(const T& m){
    
}

template <class T>
void OrderedLinkedList<T>::remove(const T& m){

}

template <class T>
MyString OrderedLinkedList<T>::toString() const{

}

#endif

El compilador dice : (a parte de otros 20000 más pq faltaq codigo, claro)
g++ -Wall -c testOLL.cc
OrderedList.h:17: error: expected class-name before ‘{’ token

No entiendo nada, como que no es una classe????????

Bueno gracias a todos de antemano!!!


_________________________________________________________________
Sé el primero en tener el nuevo Windows Live Messenger
http://download.live.com/
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20081223/15f6a81f/attachment.html>


Más información sobre la lista de distribución Cconclase