Im having the typical c++ error of "x" is not declared in this scope.
This is my main.cpp:
#include <iostream>
#include <cstdlib>
#include <cstring>
#include "funciones.h"
using namespace std;
class Materia{
private:
int nroMateria;
char nombreMateria[40];
int cantAlumnos;
int cantDocentes;
public:
void Cargar(){
int nro;
cout<<"NUMERO DE MATERIA: ";
cin>>nro;
setNroMateria(nro);
cout<<"NOMBRE DE MATERIA: ";
cin.ignore();
cin.getline(nombreMateria,35);
cout<<"CANTIDAD DE ALUMNOS: ";
cin>>cantAlumnos;
cout<<"CANTIDAD DE DOCENTES: ";
cin>>cantDocentes;
}
void Mostrar();
void setNroMateria(int nm){if(nm>0)nroMateria=nm;}
void setNombreMateria(const char *nm){strcpy(nombreMateria,nm);}
int getNroMateria(){return nroMateria;}
char *getNombreMateria(){return nombreMateria;}
};
void Materia::Mostrar(){
cout<<"NUMERO DE MATERIA: ";
cout<<nroMateria<<endl;
cout<<"NOMBRE DE MATERIA: ";
cout<<nombreMateria<<endl;
cout<<"CANTIDAD DE ALUMNOS: ";
cout<<cantAlumnos<<endl;
cout<<"CANTIDAD DE DOCENTES: ";
cout<<cantDocentes<<endl;
cout<<endl;
cout<<"-------------------------"<<endl;
cout<<endl;
}
int main(){
int opc;
while(true){
system("cls");
cout<<"MENU ARTICULOS: "<<endl;
cout<<"1. CARGAR MATERIAS: "<<endl;
cout<<"2. MOSTRAR MATERIAS: "<<endl;
cout<<"0. SALIR DEL PROGRAMA: "<<endl;
cout<<"SELECCIONE UNA OPCCION: "<<endl;
cin>>opc;
system("cls");
switch(opc){
case 1:
CargarMateria();
break;
case 2:
MostrarMateria();
break;
case 0:
return 0;
break;
}
system("pause");
}
return 0;
}
And i have my class Materia with all its properties and methods. And then i have a menu to trigger different options.
This is my funciones.h file:
void CargarMateria();
void MostrarMateria();
bool grabarEnDisco(Materia);
void CargarMateria(){
Materia obj;
obj.Cargar();
if(grabarEnDisco(obj)==true){
cout<<"REGISTRO AGREGADO";
}else {
cout<<"NO SE PUDO AGREGAR EL REGISTRO";
}
cout<<endl;
}
void MostrarMateria(){
FILE *pMateria;
Materia obj;
pMateria = fopen("materias.dat", "rb");
///wb abre el archivo en modo escritura -> SIEMPRE CREA UN ARCHIVO VACIO
///ab abre el archivo y permite que se le agreguen registros.
///rb abre el archivo y permite leer los registros. Si no existe da error.
if(pMateria == NULL){
cout<<"ERROR DE ARCHIVO";
return;
}
fread(&obj,sizeof(Materia),1,pMateria);
fclose(pMateria);
obj.Mostrar();
}
bool grabarEnDisco(Materia obj){
FILE *pMateria;
pMateria = fopen("materias.dat", "wb");
///wb abre el archivo en modo escritura -> SIEMPRE CREA UN ARCHIVO VACIO
///ab abre el archivo y permite que se le agreguen registros.
///rb abre el archivo y permite leer los registros. Si no existe da error.
if(pMateria == NULL){
cout<<"ERROR DE ARCHIVO";
return false;
}
fwrite(&obj,sizeof(Materia),1,pMateria);
fclose(pMateria);
return true;
}
#endif // FUNCIONES_H_INCLUDED
And above i have a few functions to generate write and read a file. But where i first have a prototype function:
bool grabarEnDisco(Materia);
I get
'Materia' was not declared in this scope
Any clue way this is happening?