Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197

    [c++] Visibilita all'interno di un blocco if

    concetriamoci su questo blocco di codice senza pensare al resto

    se faccio cosi tutto funziona regolarmente
    codice:
    if (!wxFile::Exists(wxT("cicciolino.txt")))
        {
                    wxMessageDialog * ciccio = new wxMessageDialog(this,"ATTENZIONE: il file non esiste","Alessioxxx",wxYES);
                    ciccio->ShowModal();
        }
        else
        {
                    wxMessageDialog * ciccio = new wxMessageDialog(this,"inizia la lettura","Alessioxxx",wxYES);
                    ciccio->ShowModal();
        }
    se la chiamata al metodo ShowModal() la metto una sola volta esterna al IF il compilatore mi da errore dicendo: "ciccio undeclared"
    codice:
    if (!wxFile::Exists(wxT("cicciolino.txt")))
        {
                    wxMessageDialog * ciccio = new wxMessageDialog(this,"ATTENZIONE: il file non esiste","Alessioxxx",wxYES);
    
        }
        else
        {
                    wxMessageDialog * ciccio = new wxMessageDialog(this,"inizia la lettura","Alessioxxx",wxYES);
    
        }
           ciccio->ShowModal();
    credo sia un problema di visibilita di un oggetto che dichiarato e i all'interno di un blocco if non sia visibile all'esterno giusto?

    allora ho pensato di dichiararlo esternamente prima dell'IF
    codice:
    wxMessageDialog *ciccio = NULL;
        if (!wxFile::Exists(wxT("cicciolino.txt")))
        {
                    wxMessageDialog * ciccio = new wxMessageDialog(this,"ATTENZIONE: il file non esiste","Alessioxxx",wxYES);
    
        }
        else
        {
                    wxMessageDialog * ciccio = new wxMessageDialog(this,"inizia la lettura","Alessioxxx",wxYES);
    
        }
           ciccio->ShowModal();
    in questo caso il compilatore non restituisce nessun errore ma il programma si pianta quando lo lancio

  2. #2

    Re: [c++]

    Originariamente inviato da afrappe
    in questo caso il compilatore non restituisce nessun errore ma il programma si pianta quando lo lancio
    Per forza: all'interno dell'if e dell'else dichiari un'altra variabile "ciccio" a cui assegni il dialog appena creato... :rollo: devi fare così:
    codice:
        wxMessageDialog *ciccio = NULL;
        if (!wxFile::Exists(wxT("cicciolino.txt")))
        {
                    ciccio = new wxMessageDialog(this,"ATTENZIONE: il file non esiste","Alessioxxx",wxYES);
    
        }
        else
        {
                    ciccio = new wxMessageDialog(this,"inizia la lettura","Alessioxxx",wxYES);
    
        }
        ciccio->ShowModal();
    .
    Amaro C++, il gusto pieno dell'undefined behavior.

  3. #3
    Utente di HTML.it L'avatar di afrappe
    Registrato dal
    Jan 2002
    Messaggi
    1,197
    yeaaa , grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.