Ok el post es para aclarar algunas dudas ya que soy nuevo en esto de programar en c++, espero que me puedan ayudar, gracias de antemano.
Para empezar he estado leyendo dos libros que aseguran ser para principiantes uno es el C++ iniciación y referencia edit: mc graw hill, y otro es el C++ how to program eighth edition edit: Deitel, cada uno propone una manera diferente de programar pero en el cual dan errores o no se si es que uno tiene que tener la noción de lo que hace y no son básicos como se hacen llamar.
ok lo que he leido en cada uno es que uno puede declarar las funciones en c++ sin tener que darles a las mismas un dato de retorno ejem:
primer caso:
Código:
eso lo intente pero solo me dio errores de compilación, declarando la función asi fuera void pude hacer que funcionara, pero entonces por que muestran que las funciones pueden ser declaradas sin especificar el dato de retorno, es posible hacerlo? y tambien muestran que pueden ser declaradas después de el main() para ser llamadas durante la ejecuciónMiFuncion() { codigo... }// no funciono int MiFuncion() { codigo...}// funciono
lo otra duda que me ronda en la cabeza es que me puse a hacer un pequeño menú para ver como era la cosa en la linea de comando utilizando un switch, pues funciono bien pero se me ocurrió separar lo que hacia en funciones llamar a las mismas desde el menú también trabajo bien dado que las funciones fueron declaradas antes de el main() y finalizaba el programa , los errores empezaron en el momento que cada función empezó a tener su submenu para llamar a la función que hacia de menú principal, decía que no había sido declarada la función por lo cual no podía ser llamada ejem:
segundo caso:
Código:
en ese caso me arrojo un error que option() no había sido declaradaint mimenu(){ switch(x){ case 1: option();...} }//menu int option(){ codigo...}//opción int main() { mimenu(); }//llamada de menu
tercer caso
Código:
aquí arrojo el mismo error pero con el mimenu() bueno tal como aparecía en el libro la función después de el main()int main() { mimenu(); }//llamada de menu int mimenu(){ switch(x){ case 1: option();...} }//menu int option(){ codigo...}//opción
buscando por internet por que me pareció que los dos libros estaban des actualizados encontré algo que ya había leído, prototipos de las funciones con eso solucione los dos errores que tenia encontrado en los libros hice esto
Código:
funciona de maravilla ahora las dudas que tengo son, por que muestran que se pueden declarar funciones sin datos de retorno?, por que si ya declare las funciones prototipos con su retorno de dato en este caso int, por que debo declarar el dato de retorno int nuevamente?, por que si se esta declarando las funciones antes de el main() igual arroja error al momento de compilar como en el segundo caso?#include <iostream> using namespace std; int mimenu(); int fileopen(); int main() { mimenu(); }//end main() int mimenu() { int x; //Variable for menu option //system("cls"); cout << "1. Open\n2. Save\n3. Exit\n\n"; cin >> x; switch( x ) { case 1: fileopen(); break; case 2: //savefile(); break; case 3: //exitfile(); break; default: cout << "No such an option.\n"; break; }//end switch return 0; }//end mimenu() int fileopen() { cout << "The file have be open\n\n"; int x; cout << "1.Back | 2.Exit: "; cin >> x; switch( x ) { case 1: mimenu(); break; case 2: break; default: break; }//end switch return 0; }//end fileopen()
les agradecería toda la ayuda que puedan brindar y recomendaciones