para mi código, quería llamar a una función que había terminado en la función de cambio de caso. Pero cada vez que trato de ejecutar, me muestra que no había declarado en el alcance.
A continuación se muestra mi código:
void mainpage(Admin a) { time_t t = time(NULL); tm* timePtr = localtime(&t); cout<< "Date : "<<timePtr->tm_mday<<"-"<<timePtr->tm_mon+1<<"-"<<timePtr->tm_year + 1900<<"\nTime : "<< timePtr->tm_hour <<":"<<timePtr->tm_min; int choice=0; cout<<"\n-----------------------------"; cout<<"\nMovie Ticket Booking System"; cout<<"\n-----------------------------"; cout<<"\nUSER INFO"; cout<<"\n <1> ADMIN"; cout<<"\n <2> CUSTOMER"; cout<<"\n <3> CURRENTLY SHOWING"; cout<<"\n <4> Exit \n\n"; cout<<"Enter Your Choice : "; cin>>choice; switch(choice) { case 1: a.admin(); break; case 2: c.customer(); break; case 3: s.shows(); break; case 4: cout<< "\nThank you for choosing us. We hope that you will enjoy the movie!"; break; default: cout<<"\n WRONG OPTION"; mainpage(a); } }Para el Caso 2 y el Caso 3, estas son las líneas que tuvieron problemas. Me gustaría mostrar el código completo, pero el sistema no me lo permite porque contiene demasiada codificación.
Llamada de función para c.cliente():
void customer() { Customer c; Admin a; int ch; cout<<"\nCUSTOMER PAGE"; cout<<"\n<1> Existing Customer"; cout<<"\n<2> Register New Customer"; cout<<"\nEnter Your Choice : "; cin>>ch; cin.ignore();Llamada de función para s.shows():
void shows() { int choice,time; char buy; ifstream file("Currentlyshowing.txt", ios::in); if (!file.is_open()) {cout<< "error open file";} for(int i=0; i<=5; i++) { getline(file,moviename[i]); } for(int i=0; i<=5; i++) { for(int j=0; j<=5; j++) { file>>show[i][j]; } }¡Gracias por adelantado!
Simplifiquemos un poco más. Interpretando tu pregunta, tenemos:
case 2: c.customer(); //<-- 'c' is not declared at this scope break; case 3: s.shows(); //<-- 's' is not declared at this scope break;Pero, ¿por qué el caso 1 está bien?
case 1: a.admin(); //<-- just fine! break; Bueno, el identificador a se pasó a la función como parámetro. Como tal, este valor se considera en el alcance . En otras palabras, se refiere a un objeto real con un tipo conocido al que puede acceder la función.
Entonces, ¿qué significa esto acerca de los valores c y s ? Probablemente esto sea una de dos cosas:
Ha creado los objetos c y s en otra función y espera que estén visibles en la página principal de la mainpage . Sin embargo, no se proporcionaron como argumentos y, debido a que las variables tampoco son globales, no son visibles dentro del alcance de la función.
Los identificadores c y s son en realidad errores tipográficos y tenía la intención de usar a en su lugar.
Lo principal que le dice el compilador es que su función no tiene idea de qué son c y s .