• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Odwoływanie się do funkcji w funkcji - początki z C++

Object Storage Arubacloud
0 głosów
507 wizyt
pytanie zadane 18 lipca 2019 w C i C++ przez Gowi Użytkownik (830 p.)

Witam!

Mam problem z używaniem funkcji void w innych funkcjach void, ponieważ tak jak na załączonym kodzie, kiedy wywołuję funkcję menu_esc() i po wyborze '2' w switchu, funkcja menu_start() nie może zostać wykonana, domyślam się, że dlatego, że jest wyżej w kodzie i komputer jej jakby nie wczytał. Czy jest jakiś sposób na to żeby to obejść ? Może dołączenie innego pliku ? Bo nie mam pojęcia w jaki sposób to zrobić. Chętnie się również dowiem jakie inne błędy popełniłem, z góry dziękuję i pozdrawiam.

 

#include <iostream>
#include <cstdio>
#include <conio.h>
#include <cstdlib>

using namespace std;

void menu_options(){
            cout << "WELCOME TO THE MINT FARM SIMULATOR !!" << endl;
            cout << endl;
            cout << endl;
            cout << "1.CHOOSE A PLANT" << endl;
            cout << "2.***IN PROGRESS***" << endl;
            cout << "3.***IN PROGRESS***" << endl;
            cout << "ESC.BACK TO MENU" << endl;
        }

void menu_esc(){
            cout << "WELCOME TO THE MINT FARM SIMULATOR !!" << endl;
            cout << endl;
            cout << endl;
            cout << "DO YOU WANT LEAVE THE GAME ?" << endl;
            cout << "1.YES" << endl;
            cout << "2.NO" << endl;

            char choice = getch();

            switch(choice)
            {
                case '1':
                    exit(0);
                break;
                case '2':
                    system("cls");
                    menu_start();
                break;
            }
        }

void menu_start(){
            cout << "WELCOME TO THE MINT FARM SIMULATOR !!" << endl;
            cout << endl;
            cout << "MENU: " << endl;
            cout << "1.NEW GAME" << endl;
            cout << "2.LOAD GAME" << endl;
            cout << "3.OPTIONS" << endl;
            cout << "0.EXIT" << endl;

           // cin >> choice;

            char choice = getch();

            switch(choice)
            {
                case '1':
                    system( "cls" );
                    cout << "1";
                break;
                case '2':
                    system( "cls" );
                    cout << "2";
                break;
                case '3':
                    system( "cls" );
                    menu_options();
                break;
                case 27:
                    system( "cls" );
                    menu_esc();
                break;
                default:
                    system( "cls" );
                    menu_start();
                break;
            }
        }




int main()
{
    menu_start();

    return 0;
}

 

2 odpowiedzi

+2 głosów
odpowiedź 18 lipca 2019 przez MsMaciek123 Pasjonat (24,760 p.)

"Wystarczy powiedzieć kompilatorowi, że taka funkcja jest, a jej kod znajdzie się później"


#include <iostream>
#include <cstdio>
#include <conio.h>
#include <cstdlib>
 
using namespace std;
 
void menu_options();
void menu_esc();
void menu_start();

void menu_options(){
            cout << "WELCOME TO THE MINT FARM SIMULATOR !!" << endl;
            cout << endl;
            cout << endl;
            cout << "1.CHOOSE A PLANT" << endl;
            cout << "2.***IN PROGRESS***" << endl;
            cout << "3.***IN PROGRESS***" << endl;
            cout << "ESC.BACK TO MENU" << endl;
        }
 
void menu_esc(){
            cout << "WELCOME TO THE MINT FARM SIMULATOR !!" << endl;
            cout << endl;
            cout << endl;
            cout << "DO YOU WANT LEAVE THE GAME ?" << endl;
            cout << "1.YES" << endl;
            cout << "2.NO" << endl;
 
            char choice = getch();
 
            switch(choice)
            {
                case '1':
                    exit(0);
                break;
                case '2':
                    system("cls");
                    menu_start();
                break;
            }
        }
 
void menu_start(){
            cout << "WELCOME TO THE MINT FARM SIMULATOR !!" << endl;
            cout << endl;
            cout << "MENU: " << endl;
            cout << "1.NEW GAME" << endl;
            cout << "2.LOAD GAME" << endl;
            cout << "3.OPTIONS" << endl;
            cout << "0.EXIT" << endl;
 
           // cin >> choice;
 
            char choice = getch();
 
            switch(choice)
            {
                case '1':
                    system( "cls" );
                    cout << "1";
                break;
                case '2':
                    system( "cls" );
                    cout << "2";
                break;
                case '3':
                    system( "cls" );
                    menu_options();
                break;
                case 27:
                    system( "cls" );
                    menu_esc();
                break;
                default:
                    system( "cls" );
                    menu_start();
                break;
            }
        }
 
 
 
 
int main()
{
    menu_start();
 
    return 0;
}

*Patrz po using namespace std;

Nie musisz wypisywać tam wszystkich funkcji. Tylko te których chcesz użyć, a ich kod znajdzie się poniżej funkcji w której ją używasz.

komentarz 19 lipca 2019 przez Gowi Użytkownik (830 p.)
Wielkie dzięki :)

A czy takie stosowanie pustej funkcji a dopiero później jej definiowanie jest poprawne czy jest to raczej błąd i czy przypadkiem nie niesie ze sobą jakichś negatywnych skutków w przyszłości ?
komentarz 19 lipca 2019 przez profesorek96 Szeryf (91,420 p.)
Jest to poprawne i o tym co pisałem post wyżej.
+1 głos
odpowiedź 18 lipca 2019 przez profesorek96 Szeryf (91,420 p.)
Bardzo dobre są twoje przypuszczenia. Poczytaj o różnicy pomiędzy deklaracja a definicja funkcji.
komentarz 19 lipca 2019 przez Gowi Użytkownik (830 p.)
W przyszłości na pewno to zrobię :)

Podobne pytania

–1 głos
1 odpowiedź 629 wizyt
pytanie zadane 21 maja 2016 w PHP przez Kuba Skoneczny Obywatel (1,780 p.)
0 głosów
3 odpowiedzi 737 wizyt
0 głosów
2 odpowiedzi 720 wizyt
pytanie zadane 24 listopada 2016 w C i C++ przez mcsobieski00 Nowicjusz (220 p.)

92,551 zapytań

141,393 odpowiedzi

319,523 komentarzy

61,936 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...