[Resuelto]Error Shadows a parameter make

Iniciado por hari, 1 Julio 2011, 13:51 PM

0 Miembros y 1 Visitante están viendo este tema.

hari

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 (cpp) [Seleccionar]

#ifndef _ej19
#define _ej19
#include <iostream>
using namespace std;

struct cabecera {
int PosInicioMarca;
int LongMarca;
char *Marca; //[LongMarca*sizeof(char)]
char *Comentario; //[100*sizeof(char)]
};

cabecera Leer(char *fichero);

#endif


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

Código (cpp) [Seleccionar]

#include <iostream>
#include <fstream>
#include "ej19.h"
#include <stdio.h>
#include <stdlib.h>
using namespace std;

void Leer(cabecera micabecera, char *fichero){
ifstream fi;
cabecera micabecera;

fi.open(fichero);

fi.read(reinterpret_cast <char*> (&micabecera.PosInicioMarca), sizeof(int));

//cout << micabecera.PosInicioMarca << endl;
fi.read(reinterpret_cast <char*> (&micabecera.LongMarca), sizeof(int));
//cout << micabecera.LongMarca << endl;

micabecera.Marca = new char[sizeof(char) * micabecera.LongMarca];
micabecera.Comentario = new char[sizeof(char) * 100];

fi.read(reinterpret_cast <char *> (micabecera.Marca), sizeof(char) * micabecera.LongMarca);
//cout << micabecera.Marca << endl;
fi.read(reinterpret_cast <char *> (micabecera.Comentario), sizeof(char) * 100);
//cout << micabecera.Comentario << endl;


fi.close();
}







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

hari

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.

Acermax

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.