Оценка конструкторского эквивалента переменной - PullRequest
0 голосов
/ 01 мая 2020

У меня есть конструктор

class MyFrame : public wxFrame {  // defines the options on the top bar of the screen here we have:
    public:
        MyFrame();
    private:
        void OnHello(wxCommandEvent& event);  // hello option
        void OnExit(wxCommandEvent& event);  // exit option
        void OnAbout(wxCommandEvent& event);  // about option
        void OnHelp(wxCommandEvent& event); // event option

        // void OnCourseTextBoxClicked(wxCommandEvent &event);
        void OnOneHundredLevelDisplayGpButtonClicked(wxCommandEvent &event);
        void OnTwoHundredLevelDisplayGpButtonClicked(wxCommandEvent &event);
        void OnThreeHundredLevelDisplayGpButtonClicked(wxCommandEvent &event);
        void OnFourHundredLevelDisplayGpButtonClicked(wxCommandEvent &event);
        void OnFiveHundredLevelDisplayGpButtonClicked(wxCommandEvent &event);

        void OnDisplayCgpaButtonClicked(wxCommandEvent &event);

        // Common Courses equating their credit load
        /* 100 LEVEL FIRST SEMESTER */
        int CHM111 = 3;
        int CHM113 = 3;
        int MTH111 = 3;
        int MTH112 = 3;
        int PHY111 = 3;
        int PHY113 = 3;
        int GST111 = 2;
        int GST112 = 2;

        /* 100 LEVEL SECOND SEMESTER */
        int CHM122 = 3;
        int CHM124 = 3;
        int MTH123 = 3;
        int MTH125 = 3;
        int PHY109 = 2;
        int PHY124 = 4;
        int GST121 = 2;
        int GST122 = 2;
        int GST123 = 2;
        int LEVEL_TOTAL_100 = 47;
}

И где-то еще в базе кода, некоторый текст вводится в текстовое поле. Предполагается, что текстовое поле содержит одну из переменных, определенных в конструкторе, которые оценивают их соответствующие целые числа.

Когда оценивается содержимое текстового поля, например:

course_one_text_box->GetValue();

оценивает CHM111

Я хочу получить целочисленное значение конструктора для CHM111, который 3. Я хочу использовать это значение в математической формуле.

Как мне это сделать? Есть ли определенный синтаксис, который вместо этого захватывает записанную конструктором версию переменной? Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 мая 2020

@ Alvindera97, ваша программа должна ограничивать пользователя вводить только эти константы? Тогда у вас неправильный инструмент для работы!

Посмотрите на wxComboBox / wxChoice. Таким образом, у пользователя будет единственный выбор из списка, и вам не нужно будет хранить определения этих констант в классе.

Надеюсь, это поможет!

0 голосов
/ 01 мая 2020

wxTextCtrl работает с wxString, а не с числами.
Но получить число из wxString очень просто: используйте wxString :: ToCLong . Например:

long value;
mystring = mytextctrl->GetValue();
if ( ! mystring.ToCLong(&value) )
    some message here, conversion failed (not a number)

//Your comparisons:
if ( value == (long)CHM111 )
   ....

Итак, если пользователь вводит 3, то 'if' имеет значение true, поскольку CMH111 инициализируется как 3

Обратите внимание на приведение (long) из int, чтобы избежать предупреждения компилятора. Почему бы не использовать long вместо int для типа CHMxxx?


Что не возможно в C ++, это сравнить с name переменной.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...