Foros - Stratos

Programadores => General Programadores => Mensaje iniciado por: glglut en 20 de Noviembre de 2007, 12:35:05 PM

Título: error C2664, problemas con templates en C++
Publicado por: glglut en 20 de Noviembre de 2007, 12:35:05 PM
hola!

estoy implementado una template en c++ de una lista doblemente enlazada, aquí está la declaración:


template<class TIPO>
class nodo {
  public:
   nodo(TIPO v, nodo<TIPO> *sig = NULL, nodo<TIPO> *ant = NULL) :
      valor(v), siguiente(sig), anterior(ant) {}

  private:
   TIPO valor;
   nodo *siguiente;
   nodo *anterior;

  friend class lista<TIPO>;
};


con un método declarado:


template<class TIPO>
void lista<TIPO>::Insertar(TIPO v)
{
....
}


declaro una lista nueva: lista<Personaje> _lista; Personaje es una clase, entonces cuando hago _lista.Insertar(new Personaje()); el visual studio me suelta el siguiente error:

error C2664: 'lista<TIPO>::Insertar' : cannot convert parameter 1 from 'Personaje *' to 'Personaje'


la declaración del template es correcto y parece que todo está bien pero no entiendo pq me da ese error, he probado poniendo &new Personaje() y no me ha dado resultado..

alguna idea?

muchas gracias por adelantado :D
Título: error C2664, problemas con templates en C++
Publicado por: Zaelsius en 20 de Noviembre de 2007, 12:37:12 PM
Prueba a declarar tu lista como

lista<Personaje*> _lista;
Título: error C2664, problemas con templates en C++
Publicado por: glglut en 20 de Noviembre de 2007, 05:51:34 PM
hola!

pues sí que era eso MUCHAS GRACIAS!!! :D:D:D