[C con Clase] que no compila

carlos martinez gadea tupy4 en hotmail.com
Mie Jun 3 14:47:25 CEST 2009


Buenas otra vez, me alegro de que hayas empezado a solucionar errores :D

Bueno, vamos por pasos:

-El primer & que tienes en la línea: 
TComplejo& operator=(const TComplejo&); 
sirve para que se devuelva una refencia, la referencia del complejo this. Al modificar los valores de real y imaginario del complejo this por los valores real e imaginario del complejo pasado como argumento, hay que devolver la refencia de this, para que conste posteriormente. 
Es decir, se hará esto al final del operator=:
return this;

Y debido a que this es una referencia, hay que indicar tal cosa, por eso lo de TComplejo&(el primero).


Respecto al const de la función (double Re() const;), es simplemente para indicar que en esa función NO se van a modificar valores, son funciones de consulta. Cuando la función no es de consulta, no tiene que llevar ese const detrás, porque si no sería imposible modificar tales valores.

Y por último, en (friend TComplejo operator+(const double,const TComplejo&);),  efectivamente no deben de ir ni en public ni en protected ni en private, por regla general, yo suelo poner las friends al principio, justo despues de abrir el corchete de la clase. De todas formas, qué complejo dices que te modificaba? En principio, no tendría que modificarte ninguno, puesto que lo que tienes que hacer ahí es crear un complejo auxiliar pasándole como parámetro del constructor de copia el complejo del argumento, y luego, al auxiliar, modificarle el valor double que toque. Y luego ya, devolver el complejo, pero el auxiliar. Por lo que no se debería modificar ningun complejo.

Un saludo!

> To: cconclase en listas.conclase.net
> From: ddagnino en gmail.com
> Date: Wed, 3 Jun 2009 11:40:21 +0200
> Subject: Re: [C con Clase] que no compila
> 
> Hola Carlos,
> he encontrado el o los errores, el primero efectivamente estaba en operator<<,
> me deje el std:: en el segundo std::ostream&. El using namespace lo he dejado tal cual y funciona bien.
> Luego me salieron más errores, pero estos eran por haber definido el inline fuera de una clase que se usa desde un precompilado.
> 
> Por cierto he usado la clase complejos que me pasaste, pero me surge unas dudas, haber si me puedes ayudar.
> En,
> TComplejo& operator=(const TComplejo&);
> para que es el primer &. ¿Puntero de un operador?, que significa.
> En,
> double Re() const;
> el const sobre que esta aplicado.
> El
> friend TComplejo operator+(const double,const TComplejo&);
> yo lo coloque sin querer en el public y me cambiaba el valor del const TComplejo& aun con el const, ¿como es esto posible?. Si lo pongo fuera de public (y fuera de private) no pasa.
> Un saludo y gracias por todo,
> Dani.
> 
> 
> 
> El pasado 2009-06-03 05:30:41, Nork_MG escribió:
>  
> N> El día 2 de junio de 2009 11:17, carlos martinez gadea
> N> <tupy4 en hotmail.com> escribió:
> N> > Hazme un favor y añádeme los archivos cc y h por favor. Esque si no va a ser
> N> > que no lo saco jejeje Gracias!
> N> >
> N> > P.D Me juego el pellejo, a que es todo por el operator<<, porque lo que sale
> N> > despues, es debido a fallos con él...
> N> ... cuanto apuestas ??? ... mi solucion ... pon el using namespace
> N> std; antes del #include "complejos.h" se te solucionaran varios ... si
> N> es que no todos tus problemas ....
> N> sl2 ...
> N> >
> N> >> To: cconclase en lista
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ

_________________________________________________________________
¿Quieres ver los mejores videos de MSN? Enciende Messenger TV
http://messengertv.msn.com/mkt/es-es/default.htm
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20090603/1e061673/attachment.html>


Más información sobre la lista de distribución Cconclase