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
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
creo que es asi
void Guardar_i(struct ingresoReg ing[], int nReg){}
Así lo tengo
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
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
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
creo que es asi
void Guardar_i(struct ingresoReg ing[], int nReg){}
Así lo tengo
You are not allowed to view links.
You are not allowed to view links.
Register or Login or You are not allowed to view links.
Register or Login
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