[C con Clase] Pasar por referencia

Camilo José cjdelreal2009 en gmail.com
Mie Ene 20 04:58:44 CET 2010


Hola Vincent.
De las opciones que planteas considero lo siguiente:
La tercera Alternativa:
mi_funcion(const FILE fichero , [...]) {
     [...]
}
esta no la creo correcta pues el parámetros fichero debe ser un puntero a FILE y no lo estás declarando

la segunda Alternativa:
*mi_funcion(const FILE &*fichero , [...]) {*
*    [...]*
} 
en esta estás creando una referencia a un puntero que es a su vez una referencia

la primera Alternativa:
*mi_funcion(const FILE *fichero , [...]) {*
*    [...]*
*}* 
esta la consideraría correcta si no fuera por el hecho de que me entro en conflicto con funciones a las que le debe introducir como parámetro el apuntador al fichero (FILE *fichero)
por ejemplo fwrite(), se le debe introducir el puntero a la cadena, la longitud de la cadena, se le tercer parámetro que no recuerdo su función, y por último el apuntador al fichero; yo probé y me daba error de compatibilidad (cannot convert ´const FILE * to FILE*´)

fuera de lo que planteaste puedes expresar la funcion de la siguiente manera:
mi_funcion(FILE *fichero) { (...) }
se expresa lo que deseabas hacer y estás pasando un fichero como referencia.

Otra cosa hay veces que en funciones te piden que debes entrar un parámetro que sea una constante pero no necesariamente
por ejemplo:
size_t fwrite(const void *ptr, size_t size, size_t n, FILE *stream);
Al llamar a la función ´ptr´ no tiene porqué ser una constante, en la función anterior solamente es un apuntador a una cadena.

Espero haber aclarado tu duda, Camilo José.:-)


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