Test Foro de elhacker.net SMF 2.1

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 (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
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.