Ver Mensaje Individual
  #1 (permalink)  
Antiguo 02/12/2007, 05:17
Tarzan
 
Fecha de Ingreso: noviembre-2005
Ubicación: Alicante (España)
Mensajes: 242
Antigüedad: 18 años, 6 meses
Puntos: 1
Error de compilación

Buenas a todos/as,

LLevo varios días con un problema de compilación en C++ al utilizar una plantilla para implementar una lista enlazada.

Tengo creada la plantilla <TIPO> para la clase Nodo y para la Clase Lista.
Ambas clases compilan bien y pienso que el código es correcto.

Por otra parte tengo una clase Cliente y pretendo realizar una listas de clientes usando las 3 clases.

En el main tengo el siguiente Código:

int main(int argc, char* argv[])
{
Cliente *cliente = new Cliente ("Pepe");
Lista <Cliente> lista;
lista.insertarAlPrincipio(*cliente);

cout << "DNI" << lista.daInicio().daDNI() << endl;

return 0;
}


se supone que la función daInicio() de la clase Lista devuelve un objeto TIPO. Esta es la función:

template <class TIPO>
TIPO Lista<TIPO>::daInicio() {
return this->inicio;
}


cuando escribo lista.daInicio(). nada más escribir el punto me aparece un cuadro (utilidad del Borland) con todos los métodos de la clase Cliente. Es decir, el compilador sabe que el objeto devuelto por la función daInicio() es de tipo Cliente...
Pero al compilar el proyecto me da un error:

[C++ Error] Lista.cpp(46): E2034 Cannot convert 'Nodo<Cliente> *' to 'Cliente'

Y no sé qué hacer... He probado a definir la lista así:
Lista <Cliente *> lista; pero nada... sigue fallando... Alguien sabe de qué se está quejando el compilador y como puedo arreglarlo?... Muchas gracias.