我有构造函数
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
。我想在数学公式中使用此值。
我该如何做?是否有一种特定的语法代替了构造函数记录的变量版本?谢谢。
您的构造函数对这些CHMxxx
值有很大的问题:构造函数完成后,它们将被删除。
此问题很容易解决:只需将其声明移至MyFrame
的声明块即可。因此,只要您在代码中的某个位置创建MyFrame
的实例,它们就会存在。您仍然可以在代码中使用初始化(CMH111=3;
)。我最好在ctor中使用'constexpr'。
对于文本框问题,wxTextCtrl
与wxString
一起使用,而不与数字一起使用。但是从wxString获取数字确实很容易:使用wxString::ToCLong。例如:
long value;
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类型?