Ok, donc je suis encore à apprendre les ficelles du métier de C++ ici, donc je présente mes excuses si cela est une simple erreur.Obtenir un défaut de seg, des problèmes avec les classes et les variables
J'ai cette classe:
class RunFrame : public wxFrame {
public:
RunFrame();
void OnKey(wxKeyEvent& keyEvent);
private:
// Configuration variables.
const wxString *title;
const wxPoint *origin;
const wxSize *size;
const wxColour *background;
const wxColour *foreground;
const wxString *placeholder;
// Control variables.
wxTextCtrl *command;
// Event table.
DECLARE_EVENT_TABLE()
};
... puis dans la méthode OnKey j'ai ce code:
void RunFrame::OnKey(wxKeyEvent& keyEvent) {
// Take the key and process it.
if(WXK_RETURN == keyEvent.GetKeyCode()) {
bool empty = command -> IsEmpty();
}
// Propogate the event through.
keyEvent.Skip();
}
... mais mon programme conserve la formation de failles seg quand il atteint la ligne où je tente d'appeler la méthode IsEmpty à partir de la variable de commande. Ma question est: "Pourquoi?" Dans le constructeur de la classe RunFrame, je peux apparemment appeler des méthodes pour la variable de commande de la même manière que dans la méthode OnKey ... et il compile correctement, il me manque des erreurs quand il essaie d'exécuter cette ligne .
Voici le code pour le constructeur si nécessaire:
RunFrame::RunFrame() :
wxFrame(NULL, wxID_ANY, wxT("DEFAULT"), wxDefaultPosition, wxDefaultSize, wxBORDER_NONE) {
// Create the styling constants.
title = new wxString(wxT("RUN"));
origin = new wxPoint(0, 0);
size = new wxSize(250, 25);
background = new wxColour(33, 33, 33);
foreground = new wxColour(255, 255, 255);
placeholder = new wxString(wxT("command"));
// Set the styling for the frame.
this -> SetTitle(*title);
this -> SetSize(*size);
// Create the panel and attach the TextControl to it.
wxPanel *panel = new wxPanel(this, wxID_ANY, *origin, *size, wxBORDER_NONE);
// Create the text control and attach it to the panel.
command = new wxTextCtrl(panel, wxID_ANY, *placeholder, *origin, *size);
// Set the styling for the text control.
command -> SetBackgroundColour(*background);
command -> SetForegroundColour(*foreground);
// Connect the key event to the text control.
command -> Connect(wxEVT_CHAR, wxKeyEventHandler(RunFrame::OnKey));
// Set the focus to the command box.
command -> SetFocus();
}
Merci à l'avance pour toute aide que vous pouvez donner!
Regards, celestialorb
Si c'était ce que je disais, vous s'il vous plaît accepter la réponse? Si non, postez votre propre réponse. –
Malheureusement, j'ai été très occupé par les choses dans ma vie scolaire et financière et je n'ai pas été en mesure d'examiner de plus près le problème depuis un certain temps. Je suis aussi d'essayer encore envelopper la tête autour de la réponse. J'ai une théorie cependant. Il se peut qu'il soit simple d'exécuter une instance "statique" de la méthode dans la classe RunFrame, et non pas mon instance spécifique. Je pourrais être en mesure d'extraire l'instance de ma RunFrame ou la variable de commande de l'événement key. Je vais devoir y jeter un coup d'œil plus tard. J'espère que cela a du sens. Merci pour l'aide, je l'apprécie! – celestialorb