Título: Problema operador asignación y operador asignación [struct] c++ Publicado por: luiggy2 en 15 Octubre 2013, 01:38 am Buenas noches!
Estaba haciendo un struct que encapsulara un vector que representa unas coordenadas en el espacio. Todo va bien hasta que llego al operador de asignación y al operador + que no funciona del todo bien. El código es el siguiente y el error de compilación está debajo: Código
El error que da en compilación es el siguiente: Código: punto.h: En la función miembro ‘Punto& Punto::operator=(const Punto&)’: Donde las lineas corresponden a: Código: Linea 29: Punto pp(p._coord.size()); Espero sus respuestas. Muchas gracias! Luiggy2 Título: Re: Problema operador asignación y operador asignación [struct] c++ Publicado por: eferion en 15 Octubre 2013, 08:38 am Código
Fíjate que en las dos declaraciones, el valor de retorno es una referencia. No puedes devolver como referencia una variable o clase cuyo ámbito sea la función que define el operador. Me explico: Código
Aquí se reproduce el mismo problema. El ámbito de "i" es GetValor... fuera de dicha función, "i" no tiene ni sentido ni valor. Si devuelves una referencia a "i"... y después "i" se libera, cualquier lectura y/o escritura sobre la referencia será, cuanto menos, insegura. Lo mejor que te puede pasar en estos casos es que o bien te falle al compilar o bien se caiga la aplicación. Además, el operador= tiene un problema. Si tu sobrecargas el operador de asignación se presupone que quieres modificar la instancia actual de la clase... y tu ahí estás haciendo una copia de p para devolverla y sin modificar "this"... eso no tiene sentido. el operador de asignación debería tener más bien esta forma: Código
Ahora fíjate que en el return, en vez de devolver una referencia a una clase propia de la función, estoy devolviendo una referencia a la instancia de la clase "modificada", que sí existirá después del return. En cuanto al operador suma, lo mejor es que no devuelvas una referencia. Un saludo. Título: Re: Problema operador asignación y operador asignación [struct] c++ Publicado por: luiggy2 en 16 Octubre 2013, 23:35 pm Perfecto, no se como no me di cuenta!
Esto de programar con sueño no es muy bueno. Muchas gracias! Luiggy2 |