[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