Dev - C++ - Sobrecarga de Operador de Asignación

   
Vista:

Sobrecarga de Operador de Asignación

Publicado por Julián (4 intervenciones) el 17/02/2015 16:34:30
Buenos días amigos, estoy empezando con C++ en la universidad y aún no entiendo bien la parte de la sobrecarga de operadores, en este momento me encuentro programando la sobrecarga del operador " = " de la clase Lista y tengo un problema, el programa me compila y todo bien pero cuándo ejecuto no hace lo que tiene que hacer y la verdad no estoy muy seguro de mi cógido por la razón de que no he entendido bien esta parte, aquí les dejo el código:

Cabecera: lista<Elemento>& operator=(const lista<Elemento> &l2);

Código:

template <class Elemento>
lista<Elemento>& lista<Elemento>::operator=(const lista<Elemento> &l2)
{
Nodo<Elemento> *actual,*actual2=l2.primero;
if(this!=&l2)
{
if(actual2!=NULL)
{
Nodo<Elemento> *nuevo = new Nodo<Elemento>(actual2->getDato(),NULL,NULL);
primero=nuevo;
actual=primero;
actual2 = actual2->getSiguiente();
while(actual2!=NULL)
{
Nodo<Elemento> *nuevo = new Nodo<Elemento>(actual2->getDato(),NULL,NULL);
actual->setSiguiente(nuevo);
nuevo->setAnterior(actual);
actual->getSiguiente();
actual2->getSiguiente();
}
}else{
primero=NULL;
}
}
return(*this);
}

espero que me puedan ayudar, se los agradecería enormemente. Gracias de antemano.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

Sobrecarga de Operador de Asignación

Publicado por Martín (65 intervenciones) el 18/02/2015 04:22:44
Hola; no sé si te pueda servir de ayuda, pero algo que me llama la atención es:
1
2
3
4
5
6
7
8
while(actual2!=NULL)
{
	Nodo<Elemento> *nuevo = new Nodo<Elemento>(actual2->getDato(),NULL,NULL);
	actual->setSiguiente(nuevo);
	nuevo->setAnterior(actual);
	actual->getSiguiente();
	actual2->getSiguiente();
}
invocas actual->getSIguiente() y a actual2->getSiguiente(), pero no haces nada con eso.

Y en términos generales, el operador de asignación debería liberar la memoria asignada previamente (si hubo alguna) antes de hacer la copia de los miembros.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar