评估变量的构造函数等价物

Evaluating the constructor equivalent of a variable

我有构造函数

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。我想在数学公式中使用这个值。

我该怎么做? 是否有特定的语法可以获取构造函数记录的变量版本? 谢谢。

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' 为真,因为 CMH111 被初始化为 3

注意 (long)int 强制转换以避免编译器警告。为什么不使用 long 而不是 int 作为 CHMxxx 的类型?


在 C++ 中不可能与变量的 名称 进行比较。

@Alvindera97, 您的程序是否应限制用户只能输入那些常量?那你用错了工具!

看看wxComboBox/wxChoice。这样,用户将只能从列表中选择 select,并且您不需要将这些常量定义保留在 class.

希望对您有所帮助!