Resulta que tengo el siguiente código:
Cita de: cpp
#include <iostream>
using namespace std;
#define TAM_MAX_REGISTROS 20
struct{
int numRegistro;
string mes;
string RCF;
string concepto;
float monto;
}ingresoReg[TAM_MAX_REGISTROS];
struct{
int numRegistro;
string mes;
string concepto;
float monto;
}gastoReg[TAM_MAX_REGISTROS];
Y lo voy a pasar como parametro en una función, que es:
void Guardar_i(ingresoReg ing[], int nReg)
{
int i;
ofstream archivo("ingresos.txt",ios::out);
if(!archivo)
{
cout << "No se pudo abrir el archivo" << endl;
exit(1);
}
for(i=0; i<nReg; i++)
{
cout << ing[i].numRegistro << "\t" << ing[i].mes << "\t\t" << ing[i].monto << "\t" << ing[i].RCF
<< "\t\t" << ing[i].concepto << endl;
}
archivo.close();
}
Y la uso de la siguiente manera:
Guardar_i(ingresoReg,nReg);
El error es:
Citar
blablabla\archivo.h|34|error: variable or field 'Guardar_i' declared void|
blablabla\archivo.h|34|error: 'ingresoReg' was not declared in this scope|
blablabla|34|error: expected primary-expression before 'int'|
Probé de la siguiente forma:
void Guardar_i(struct ingresoReg ing[], int nReg)
Y tampoco, he buscado y probado todo lo que he encontrado en google y no funciona, de tanto que he probado ya ni sé qué estoy haciendo ::) xD
¿Cuál es el problema? y ¿Cómo puedo solucionarlo?
Zalu2!
Te hablo desde el lado java porque de C de momento no tengo ni idea:
Cuando se declara un método se le dice si es public private proteted etc sino se declara nada el método es comprendido como public.
Después le sigue :sino quieres que retorne ningún dato entonces se pone void o si quieres que retorne algo pues tienes que poner el dato a devolver sea String Interger , Array[] o lo que sea.
A continuación van los parámetros en estos parámetros hay que declarar el tipo de dato que va a necesitar y nombre y creo que aquí es donde tienes el problema por lo que veo le estás pasando por parámetro esto ingresoReg ing[] creo que está mal declarado y luego no lo utilizas en el método.
Ya de antemano hablo desde mi ignorancia en C pero como tienen cierta similitud a java he intentado ayudarte a ver si algún experto en C te ilumina mejor que yo.
No es un método, es una función no tiene porqué ser "public o private", la función que usa el "struct" como parámetro es void, no sé a qué te refieres, quizás no me expliqué bien.
El registro "ing" si que se usa en la función, tampoco sé a qué te refieres con que "no lo utilizo".
He probado con muchas cosas y no me funcionó:
struct ingresoReg ing[]
struct ingresoReg[] ing
entre otras y nada, alguien sabe cómo solucionarlo?
Zalu2
creo que es asi
void Guardar_i(struct ingresoReg ing[], int nReg){}
y esto:
struct{
int numRegistro;
string mes;
string RCF;
string concepto;
float monto;
}ingresoReg[TAM_MAX_REGISTROS];
struct{
int numRegistro;
string mes;
string concepto;
float monto;
}gastoReg[TAM_MAX_REGISTROS];
deberia ser asi
struct ingresoReg[TAM_MAX_REGISTROS]{
int numRegistro;
string mes;
string RCF;
string concepto;
float monto;
}
struct gastoReg[TAM_MAX_REGISTROS]{
int numRegistro;
string mes;
string concepto;
float monto;
}
prueba y me dices.
saludos
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
creo que es asi
void Guardar_i(struct ingresoReg ing[], int nReg){}
Así lo tengo
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
deberia ser asi
struct ingresoReg[TAM_MAX_REGISTROS]{
int numRegistro;
string mes;
string RCF;
string concepto;
float monto;
}
struct gastoReg[TAM_MAX_REGISTROS]{
int numRegistro;
string mes;
string concepto;
float monto;
}
prueba y me dices.
saludos
Es irrelevante -> https://en.wikipedia.org/wiki/Struct_(C_programming_language) el struct funciona igual.
Sigo sin solucionar el problema :'(
Zalu2
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
creo que es asi
void Guardar_i(struct ingresoReg ing[], int nReg){}
Así lo tengo
No tienes permitido ver enlaces.
Registrate o Entra a tu cuenta
deberia ser asi
struct ingresoReg[TAM_MAX_REGISTROS]{
int numRegistro;
string mes;
string RCF;
string concepto;
float monto;
}
struct gastoReg[TAM_MAX_REGISTROS]{
int numRegistro;
string mes;
string concepto;
float monto;
}
prueba y me dices.
saludos
Es irrelevante -> https://en.wikipedia.org/wiki/Struct_(C_programming_language) el struct funciona igual.
Sigo sin solucionar el problema :'(
Zalu2
no es irrelevante de hecho el struct va asi
struct IDENTIFICADOR {} OBJETO;
xD
prueba ponerles un identificador y al final tu objeto asi
struct cualquiercosa{
int numRegistro;
string mes;
string RCF;
string concepto;
float monto;
}ingresoReg[TAM_MAX_REGISTROS];
struct cualquiercosa{
int numRegistro;
string mes;
string concepto;
float monto;
}gastoReg[TAM_MAX_REGISTROS];
Me refiero a que es irrelevante porque el error no está ahi.
Es lo mismo, lo que tenía a esto, por dar un ejemplo.
struct regIngreso{
int numRegistro;
string mes;
string RCF;
string concepto;
float monto;
regIngreso ingresoReg[TAM];
};
El asunto está en el paso como parametro.
¿Alguien sabe cómo puedo solucionarlo?
Zalu2
Creo que con esto resolvés el problema
struct Ingreso {
int numRegistro;
string mes;
string RCF;
string concepto;
float monto;
} ingresoReg[TAM_MAX_REGISTROS];
struct Gasto {
int numRegistro;
string mes;
string concepto;
float monto;
} gastoReg[TAM_MAX_REGISTROS];
void guardar_i(Ingreso ing[], int nReg) { /*...*/ }
Saludos!
WhiZ
WhiZ es lo mismo que intento explicarle xD pero parece que no me explique bien y si esta ahi el problema
blablabla\archivo.h|34|error: variable or field 'Guardar_i' declared void|
blablabla\archivo.h|34|error: 'ingresoReg' was not declared in this scope|
blablabla|34|error: expected primary-expression before 'int'|
no te toma el ingresoReg por que no le habias puesto un identificador xD
y como lo que usabas no era un identificador te daba error en la funcion igual
y lo de blablabla\archivo.h|34|error: variable or field 'Guardar_i' declared void|
es por que seguro estaba justo arriba de la funcion y como el struct estaba mal declarado afectaba las lineas de abajo y tiraba ese error
bueno espero que con el ejemplo de WhiZ ya soluciones tu problema
saludos
Gracias por la ayuda, creo que tengo que cambiar de libros jaja ::)
Zalu2