Это, очевидно, дыра в моем самоучка информатики образования ...Какая разница между объектом, созданным в вызове функции и объект передается в
Конструктор для текстового управления (wxTextCtrl) в приложении WxWidgets имеет необязательный параметр для объекта валидатора. Все примеры кода создают валидатор «на лету» внутри конструктора для текстового управления.
Это работает ..
wxString value = L"0.0";
wxTextCtrl* _Text = new wxTextCtrl(this, wxID_ANY, value,
wxDefaultPosition, wxDefaultSize, 0,
wxTextValidator(wxFILTER_NUMERIC, &value));
Однако в моем конкретном случае я хочу создать валидатор в другой функции и передать его обратно, что не работает. В качестве промежуточного шага я пытался создать его как раз перед созданием wxTextCtrl и передать его в России, но это не работает, либо ...
wxString value = L"0.0";
wxValidator valid = wxTextValidator(wxFILTER_NUMERIC, &value);
wxTextCtrl* _Text = new wxTextCtrl(this, wxID_ANY, value,
wxDefaultPosition, wxDefaultSize, 0, valid);
Хотя это компилирует и запускает его не выполняет проверку. Может ли кто-нибудь объяснить, почему?
Прототип wxTextValidator требует постоянной ссылки ..
wxTextCtrl::wxTextCtrl ( wxWindow * parent,
wxWindowID id,
const wxString & value = wxEmptyString,
const wxPoint & pos = wxDefaultPosition,
const wxSize & size = wxDefaultSize,
long style = 0,
const wxValidator & validator = wxDefaultValidator,
const wxString & name = wxTextCtrlNameStr
)
Третий параметр для ваших 'новых вызовов wxTextCtrl()' отличается: 'value' vs' _controls [name] '. Это намеренно? –
@TavianBarnes нет, это была опечатка, я исправил ее. – marcp