Visualizzazione dei risultati da 1 a 6 su 6
  1. #1

    [C++ e wxWindows] Segmentation Fault con wxTextCtrl

    ciao a tutti.
    ho un problema: derivo da un wxFrame una finestrella:
    codice:
    class addVoloFrame: public wxFrame{
    public:
    	...
    	wxTextCtrl* addOraPartOre, *addOraPartMin, *addOraPartSec;
    	...
    }
    nel costruttore del frame, inizializzo la wxTextCtrl:
    codice:
    addVoloFrame::addVoloFrame(const wxString& title, 
    	myApp* appPrinc, mainFrame* framePrinc)
    	: wxFrame((wxFrame *)NULL, -1, title, wxDefaultPosition, 
    	wxSize(420,550), wxMINIMIZE_BOX)
    {
    	...
    	addCodice=new wxTextCtrl(this, -1);
    	...
    }
    appena cerco di istanziare un oggetto di addVoloFrame (ovvero cerco di aprire la finestra) ho un Segmentation Fault.
    avete qualche idea? io ci sto diventando pazzo!

  2. #2

  3. #3
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    posta un po piu di codice ...chi è addCodice?

    cerca di individuare la riga precisa che causa l'errore mettendo delle istruzioni di stampa.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  4. #4
    ciao, intanto grazie per l'interessamento: ne ho davvero bisogno (progetto per sessione di esame di settembre)...
    allora, questa è tutta la classe del frame:
    codice:
    class addVoloFrame: public wxFrame{
    	public:
    		//costruttore
    		addVoloFrame(const wxString&, myApp*, mainFrame*);
    
    
    		//oggetti logici
    		char addFreq[7];
    
    		myApp* puntApplicazione;
    
    		mainFrame* finestraPrincipale;
    
    		
    
    		//oggetti fisici
    		wxFlexGridSizer* sizer;
    		wxTextCtrl *addCodice, *addCompagnia, *addProvenienza, *addDestinazione;
    		//ora partenza ed arrivo
    
    			wxTextCtrl* addOraPartOre, *addOraPartMin, *addOraPartSec;
    
    			wxTextCtrl* addOraArrOre, *addOraArrMin, *addOraArrSec;
    		//data inizio e fine validita
    			wxCalendarCtrl* addDataInizio;
    			wxCalendarCtrl* addDataFine;
    		//frequenza
    
    		wxCheckBox* addLun, *addMar, *addMer, *addGio, *addVen, *addSab, *addDom;
    		//pulsante che aggiunge
    
    		wxButton* bottoneAggiungi;
    		
    		//metodi per eventi
    		void OnAggiungi(wxCommandEvent&);
    		...
    
    	private:
    
    		DECLARE_EVENT_TABLE()
    };
    e questo è il relativo costruttore:
    codice:
    addVoloFrame::addVoloFrame(const wxString& title, myApp* appPrinc, mainFrame* framePrinc)
    	: wxFrame((wxFrame *)NULL, -1, title, wxDefaultPosition, wxSize(420,550), wxMINIMIZE_BOX), 
    	puntApplicazione(appPrinc), finestraPrincipale(framePrinc)
    {
    
    	
    	for (int l=0; l<7; l++) addFreq[l]='-';
    	wxStaticBox* boxOpzioni = new wxStaticBox(this, -1, "Aggiunta nuovo volo:");
    	wxStaticBoxSizer* sizerOpzioni = new wxStaticBoxSizer(boxOpzioni, wxVERTICAL);
    	sizer = new wxFlexGridSizer(2, 5, 5);
    	wxFlexGridSizer* feqSizer = new wxFlexGridSizer(2, 1, 1);
    	//ATTENZIONE:
    	//appena decommento anche solo una di queste righe, va in segmentation fault
    	/*addCodice=new wxTextCtrl(this, -1);
    
    	addCompagnia=new wxTextCtrl(this, -1);
    
    	addProvenienza=new wxTextCtrl(this, -1);
    
    	addDestinazione=new wxTextCtrl(this, -1);*/
    	addDataInizio = new wxCalendarCtrl(this, -1, wxDefaultDateTime, 
    					wxDefaultPosition, wxDefaultSize, wxCAL_MONDAY_FIRST);
    	addDataFine = new wxCalendarCtrl(this, -1, wxDefaultDateTime, 
    					wxDefaultPosition, wxDefaultSize, wxCAL_MONDAY_FIRST);
    	addLun = new wxCheckBox(this, ID_checkLun, "Lunedì"); feqSizer->Add(addLun);
    	addMar = new wxCheckBox(this, ID_checkMar, "Martedì"); feqSizer->Add(addMar);
    	...
    	
    	//aggiungo gli elementi al sizer
    	sizer->Add(new wxStaticText(this, -1, "Codice nuovo volo:"));
    	...
    	
    	SetSizer(sizerOpzioni);
    
    }
    questo oggetto viene istanziato da un metodo di mainFrame (classe con la finestra principale):
    codice:
    void mainFrame::OnAddVolo(wxCommandEvent& WXUNUSED(event)){
    	addVoloFrame* inserimentovolo = new addVoloFrame(
    			wxT("Progetto Programmazione 2 - Aggiunta volo"), 
    			puntApplicazione, 
    			this);
    
    	inserimentovolo->Show();
    }
    grazie ancora!

  5. #5
    Utente di HTML.it L'avatar di anx721
    Registrato dal
    Apr 2003
    Messaggi
    2,352
    Cosi non riesco a riprodurre l'errore, dovresti postare tutti i file del programma, o magari il minimo necessario per avere un'applicazione compilabile ed eseguibile che produce l'errore.

    Sun Certified Java Programmer

    EUCIP Core Level Certified

    European Certification of Informatics Professionals

  6. #6

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 © 2024 vBulletin Solutions, Inc. All rights reserved.