Foro de elhacker.net

Programación => Programación C/C++ => Mensaje iniciado por: hari en 1 Julio 2011, 13:51 pm



Título: [Resuelto]Error Shadows a parameter make
Publicado por: hari en 1 Julio 2011, 13:51 pm
Estaba haciendo un programa que leia una serie de datos binarios de un fichero.
El caso es que hize primero la función leer que me funcionaba perfectamente, y ahora estoy intentado modificarla para que sea un void, y leerla desde el main.


Atención, la mitad del codigo no es necesario leerselo, ver al final el problema.

El .h es asi:

Código
  1. #ifndef _ej19
  2. #define _ej19
  3. #include <iostream>
  4. using namespace std;
  5.  
  6. struct cabecera {
  7. int PosInicioMarca;
  8. int LongMarca;
  9. char *Marca; //[LongMarca*sizeof(char)]
  10. char *Comentario; //[100*sizeof(char)]
  11. };
  12.  
  13. cabecera Leer(char *fichero);
  14.  
  15. #endif
  16.  

y donde está la función es así:

Código
  1. #include <iostream>
  2. #include <fstream>
  3. #include "ej19.h"
  4. #include <stdio.h>
  5. #include <stdlib.h>
  6. using namespace std;
  7.  
  8. void Leer(cabecera micabecera, char *fichero){
  9. ifstream fi;
  10. cabecera micabecera;
  11.  
  12. fi.open(fichero);
  13.  
  14. fi.read(reinterpret_cast <char*> (&micabecera.PosInicioMarca), sizeof(int));
  15.  
  16. //cout << micabecera.PosInicioMarca << endl;
  17. fi.read(reinterpret_cast <char*> (&micabecera.LongMarca), sizeof(int));
  18. //cout << micabecera.LongMarca << endl;
  19.  
  20. micabecera.Marca = new char[sizeof(char) * micabecera.LongMarca];
  21. micabecera.Comentario = new char[sizeof(char) * 100];
  22.  
  23. fi.read(reinterpret_cast <char *> (micabecera.Marca), sizeof(char) * micabecera.LongMarca);
  24. //cout << micabecera.Marca << endl;
  25. fi.read(reinterpret_cast <char *> (micabecera.Comentario), sizeof(char) * 100);
  26. //cout << micabecera.Comentario << endl;
  27.  
  28.  
  29. fi.close();
  30. }
  31.  
  32.  
  33.  
  34.  



me da un error en el fichero leer.cpp en la linea donde pone: cabecera micabecera; (la declaración)
pone: declaration of 'cabecera micabecera' shadows a parametermake

Nunca había tenido este error, y no sé porqué es, por lo tanto estoy bloqueado!
he buscado en google pero nada.

Muchas gracias


Título: Re: Error Shadows a parameter make
Publicado por: hari en 1 Julio 2011, 13:59 pm
Despues de un montón de tiempo de revisar el código me he dado cuenta, recibe como parámetro y luego declara lo mismo.

Siento haber hecho perder el tiempo, pero no me había dado cuenta.


Título: Re: Error Shadows a parameter make
Publicado por: Acermax en 1 Julio 2011, 14:00 pm
Sin leer lo que hace tu código exactamente, a la función Leer le pasas un objeto de tipo cabecera llamado "micabecera" y luego inmediatamente debajo declaras un objeto de tipo capecera con nombre "micabezera".
Estás declarando un objeto que es lo que le estás pasando a la función.

Un saludo.

EDIT: Vale, hemos escrito a la vez, veo que ya viste el error.