Хорошо, так что я все еще изучаю здесь C ++, поэтому я прошу прощения, если это простая ошибка.
У меня есть этот класс:
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()
};
... тогда в методе OnKey у меня есть этот код:
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();
}
... но моя программа продолжает сбой сегмента, когда достигает строки, где я пытаюсь вызвать метод IsEmpty из командной переменной. Мой вопрос: "Почему?" В конструкторе класса RunFrame я, казалось бы, могу вызывать методы для командной переменной так же, как я делаю это в методе OnKey ... .
Вот код для конструктора, если необходимо:
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();
}
Заранее благодарим за любую помощь, которую вы можете оказать!
С уважением,
celestialorb